MyBatis–自定义映射resultMap

  • Post author:
  • Post category:其他



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.测试



版权声明:本文为HG13542386794原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。