mybatis配置涉及模块&配置文件说明
1. 搭建框架:
web.xml |
Springmvc |
spring-service |
spring-transaction |
spring-mapper |
SqlMapConfig.xml |
2. 生成Mapper接口和Mapper配置文件(接口和配置文件中的方法名要一一对应),以及POJO
3. mybatis配置文件说明:
a. 用#表示占位符,如where stuID = #{stuid}
b. 拼接符$,如where username like ‘%${value}$%’ 定义输入到sql中的映射类型,${value}表示使用参数将${value}替换,做字符串的拼接。注意:如果是取简单数量类型的参数,括号中的值必须为value,POJO类型时参数可以是属性名。
#{} 和 ${} 区别:
#{}表示一个占位符,通过#{}可以实现preparedStatement(预处理语句)向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。#{}可以接收简单类型值或POJO属性值。如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或POJO属性值。如果parameterType传输单个简单类型值,${}括号中只能是value。
c. 自增主键插入数据库后,返回自增的id值,
如果值自增的整数类型,是在插入之后才有值,所以主键值的获取阶段是after,order = “AFTER”,插入成功后MyBatis会把自增的id值赋值给POJO。
第二种主键形式,UUID形式,这种形式的主键是需要在插入之前为POJO对象赋主键值,如果不想自己通过java代码来手动赋值,那么可以让MyBatis自动为POJO的主键属性赋值,这时就得在插入之前执行,Mybatis会自把生成的UUID值赋值给POJO。
4. 一对一映射:由于MyBatis是半自动化的映射,所以不会自动加载对应关联属性,需要自己进行查询结果映射。(在POJO中添加关联属性的get,set方法)
在mapper.xml中配置返回属性映射,因为这种非字段属性MyBatis不会自动组装,一对一用association节点进行包裹关联属性,关联属性和查询的结果字段中,如果和主表栏目字段名冲突了得起别名,如左连接结果id改为uid别名进行关联。
5. 一对多映射:
POJO中添加集合属性;
mapper中配置属性映射,集合属性包裹在collection节点中
6. 批量查询:
sql中的 in(1,2,3,4) 在MyBatis中也可以通过内置的循环标签属性foreach进行,如查询ids,这时用 in 就比较快一些,foreach 标签支持传入 list 和 map 进行遍历,但是map用的不多,因为多个属性时一般传入POJO,但是 list 用的地方还挺多,其可以遍历POJO下的list类型属性,也支持直接传入 list 集合进行遍历(直接传入 list 集合)。
批量操作如果传入的是POJO,那么collection 指定为 POJO 属性名。
参考:https://www.cnblogs.com/javabg/p/7472287.html