MyBatis学习-2
三种查询方式
- .selectList() 返回值为 List<resultType 属性控制> 适用于查询结果都需要遍历的需求
- .selectOne() 返回值 Object,适用于返回结果只是变量或一行数据时
- .selectMap() 返回值 Map 适用于需要在查询结果中通过某列的值取到这行数据的需求. Map<key,resultType 控制>
settings标签
- 在mybatis全局配置文件中通过settings标签控制 mybatis 全局开关
- 在mybatis.xml(mybatis配置文件)中开启log4j
- 必须保证有 log4j.jar
- 在 src 下有 log4j.properties
1
2
3<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
注意再mybais.xml中的标签顺序
parameterType 属性
在XXXMapper.xml中<-select><-delete>等标签的 parameterType 可以控制传入的参数类型
SqlSession 的 selectList()和 selectOne()的第二个参数和 selectMap()的第三个参数都表示方法的参数.
- 在 Mapper.xml 中可以通过#{}获取参数,只能获取单个参数
- 多个参数(基本数据类型或 String,只有使用接口绑定时才能获取到多个参数,否则只能用对象或者map来获取多个参数)
- parameterType 控制参数类型
- #{}获取参数内容
- 使用索引,从 0 开始 #{0}表示第一个参数
- 也可以使用#{param1}第一个参数
- 如果只有一个参数(基本数据类型或 String),mybatis对#{}里面内容没有要求只要写内容即可.
- 参数是对象
- #{属性名}
- 参数是 map
- 写成#{key}
- 多个参数(基本数据类型或 String,只有使用接口绑定时才能获取到多个参数,否则只能用对象或者map来获取多个参数)
- #{} 和 ${} 的区别
- #{} 获取参数的内容支持 索引获取,param1获取指定位置参数,并且 SQL 使用?占位符
- ${} 字符串拼接不使用?,默认找${内容}内容的 get/set 方法,如果写数字,就是一个数字
如果在 xml 文件中出现 “<”,“>”,双引号 等特殊字符时可以使用XML 文件转义标签(XML 自身的) <-![CDATA[ 内容 ]]>
typeAliases 别名
- 给某个类起别名
- 在typeAliasese标签下创建一个typeAlias标签,type属性为类名的全限定路径,alias属性值为别名名
mybatis.xml配置
mapper.xml引用
- 在typeAliasese标签下创建一个typeAlias标签,type属性为类名的全限定路径,alias属性值为别名名
- 直接给某个包下所有类起别名,别名为类名,不区分大小写
- 在typeAliasese标签下创建一个package标签,name属性值为包名
mybatis.xml配置
mapper.xml中通过类名引用
- 在typeAliasese标签下创建一个package标签,name属性值为包名
mybatis中实现mysql分页写法
由于mybatis底层参数的传递和获取通过占位符?实现,而?不允许在关键字前后进行数学运算,需要在代码中计算完成后传递到 mapper.xml中
在java代码中计算(如果希望传递多个参数,可以使用对象或 map)
通过声明一个变量名为pageStart的变量接收 pageSize*(pageNumber-1)的值
在 mapper.xml 中代码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kylin!
评论