1.
处理下划线与属性名不一致的方法
字段名和属性名不一致的情况 , 如何处理映射关系
解决方法 :
1. 为查询的字段设置别名 , 和属性名保持一致
例 :
selectemp_id empId , emp_name empName , age , genderfromt_emp where emp_id = #{empId}
2. 当字段符合MySql 的要求使用
_ ,
而属性符合
Java
的要求使用驼峰
.
此时可以在MyBatis的核心配置文件中设置一个全局配置, 可以自动将下划线映射为驼峰
mapUnderscoreToCamelCase
例 : emp_id –> empId ; emp_name –> empName
Select * from t_emp where emp_id = #{empId}
3 . 使用
resultMap
自定义映射处理
注 : resultMap : 设置自定义的映射关系
Id : 唯一标识
Type : 处理映射关系的实体类的类型
常用的标签 :
Id : 处理主键和实体类中的属性和映射关系
Result : 处理普通字段和实体类中属性的映射关系
Column : 设置映射关系中的字段名 , 必须是SQL查询出的某个字段
Property : 设置映射关系中的属性的属性名 , 必须是处理的实体类类型中的属性名
测试方法
2.
处理多对一的映射关系
在表与表之间的对应关系中 , 多对一对应对象 , 多对多对应集合 .
由于多对一的Emp类中,有Dept属性的数据(在数据库中是 int 或 String 类型的数据) , 按正常情况来映射是无法获取到数据的 .
方法一 : 使用级联的方式
方法二 : 使用associationc
Associationc : 处理多对一的映射关系 ( 处理实体类类型的属性 )
Property : 设置需要处理映射关系的属性的属性名
JavaType : 设置要处理的属性成类型
方法三 : 分步查询
流程 : 先查询出一张表的数据 , 再根据某个字段进行查询另外一张表的数据
Property : 设置需要处理映射关系的属性的属性名
Select : 设置分步查询的SQL的唯一标识
Column : 将查询出的某个字段作为分步查询的SQL的条件;
设置映射关系中的字段名 , 必须是SQL查询出的某个字段
3.
分步查询的优点
延迟加载的使用
在核心配置文件里面设置
fetchType : 在开启了延迟加载的环境中 , 通过该属性设置当前的分步查询是否使用延迟加载
fetchType : ” eager(立即加载) | lazy(延迟加载) ”
在映射文件里面配置
4.
处理一对一的映射关系
方法一 : 通过Collection处理
Property : 设置映射关系中的属性的属性名 , 必须是处理的实体类类型中的属性名
ofType : 设置集合类型的属性中存储的数据的类型
方法二 : 通过分步查询处理
1.把emp设置成一个集合
2.在接口中创建一个方法
3.调用接口 , 并编写SQL
4.编写另外一张表的接口方法
5.编写另外一张表的SQL
6.测试