本篇文章为你整理了自定义映射resultMap(自定义映射游戏按键)的详细内容,包含有自定义映射app 自定义映射游戏按键 自定义映射键鼠 自定义映射solidworks到dxf/dwg 自定义映射resultMap,希望能帮助你了解 自定义映射resultMap。
resultMap处理字段和属性的映射关系
如果字段名与实体类中的属性名不一致,该如何处理映射关系?
第一种方法:为查询的字段设置别名,和属性名保持一致
下面是实体类中的属性名:
private Integer empId;
private String empName;
private Integer age;
private String gender;
这是建表时设置的字段名:
emp_id emp_name age gender
我们只需要在Mapper.xml中在写sql语句时,对字段名进行设置别名,使得与属性名一致:
select emp_id empId,emp_name empName,age,gender from t_emp where emp_id = #{empId}
第二种方法:当字段符合Mysql要求使用下划线,而属性名符合Java要求使用驼峰,此时可以在Mybatis的核心配置文件中设置一个全局配置信息mapUnderscoreToCamelCase,就可以在查询表中数据时,自动将下划线类型的字段名转换为驼峰。
settings
!--将下划线映射为驼峰--
setting name="mapUnderscoreToCamelCase" value="true"/
/settings
result:处理普通字段和实体类中属性的映射关系
column:设置映射关系中的字段名,必须是sql查询出的某个字段
property:设置映射关系中的属性的属性名,必须是处理实体类型类型中的属性名
resultMap id="empResultMap" type="Emp"
id column="emp_id" property="empId" /id
result column="emp_name" property="empName" /result
result column="age" property="age" /result
result column="gender" property="gender" /result
/resultMap
!-- Emp getEmpByEmpId(@Param("empId") Integer emId);--
select id="getEmpByEmpId" resultMap="empResultMap"
select * from t_emp where emp_id = #{empId}
/select
1.级联方式处理映射关系
当Emp实体类中具有Dept对象,但是字段中不存在这个属性,我们需要将Dept对象中的属性与查询的字段名建立映射关系。
resultMap id="empAndDeptResultMap" type="Emp"
id column="emp_id" property="empId" /id
result column="emp_name" property="empName" /result
result column="age" property="age" /result
result column="gender" property="gender" /result
result column="dept_id" property="dept.deptId" /result
result column="dept_name" property="dept.deptName" /result
/resultMap
select id="getEmpAndDeptByEmpId" resultMap="empAndDeptResultMap"
select t_emp.*,t_dept.*
from t_emp left join t_dept on t_emp.dept_id = t_dept.dept_id
where t_emp.emp_id = #{empId}
/select
2.使用association处理映射关系
association:处理多对一的映射关系(处理实体类类型的属性)
property:设置需要处理映射关系的属性的属性名
javaType:设置要处理的属性的类型
resultMap id="empAndDeptResultMap" type="Emp"
id column="emp_id" property="empId" /id
result column="emp_name" property="empName" /result
result column="age" property="age" /result
result column="gender" property="gender" /result
association property="dept" javaType="Dept"
id column="dept_id" property="deptId" /id
result column="dept_name" property="deptName" /result
/association
/resultMap
3.分步查询
resultMap id="empAndDeptByStepResultMap" type="Emp"
id column="emp_id" property="empId" /id
result column="emp_name" property="empName" /result
result column="age" property="age" /result
result column="gender" property="gender" /result
select:设置分步查询,查询某个属性的值的sql标识(namespace.sqlId)
column:将sql以及查询结果中的某个字段设置为分步查询的条件
association property="dept"
select="com.atguigu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"
column="dept_id" /association
/resultMap
!-- Emp getEmpAndDeptByStepOne(@Param("empId") Integer empId);--
select id="getEmpAndDeptByStepOne" resultMap="empAndDeptByStepResultMap"
select * from t_emp where emp_id = #{empId}
/select
!-- Dept getEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);--
select id="getEmpAndDeptByStepTwo" resultType="Dept"
select * from t_dept where depy_id = #{deptId}
/select
分步查询的优点:可以实现延迟加载,但是必须在核心配置文件中设置全局配置信息:
lazyLoadingEnabled:延迟加载的全局开关,当开启时,所有关联对象都会延迟加载。
aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载
此时就可以实现按需加载,获取的数据是什么,就会执行相应的sql。此时可通过association和collection中的fetchType属性设置当前的分步查询是否使用延迟加载。
resultMap id="deptAndEmpResultMap" type="Dept"
id column="dept_id" property="deptId" /id
result column="dept_name" property="deptName" /result
ofType:设置collection标签所处理的集合属性中存储数据的类型
collection property="emps" ofType="Emp"
id column="emp_id" property="empId" /id
result column="emp_name" property="empName" /result
result column="age" property="age" /result
result column="gender" property="gender" /result
/collection
/resultMap
!--Dept getDeptAndEmpByDeptId(@Param("deptId") Integer deptId);--
select id="getDeptAndEmpByDeptId" resultMap="deptAndEmpResultMap"
select *
from t_dept
LEFT JOIN t_emp
ON t_dept.dept_id = t_emp.dept_id
WHERE t_dept.dept_id = #{deptId};
/select
2.分步查询
resultMap id="deptAnEmpResultMapByStep" type="Dept"
id column="dept_id" property="depyId" /id
result column="dept_name" property="deptName" /result
collection property="emps"
select="com.atguigu.mybatis.mapper.EmpMapper.getDeptAndEmpByStepTwo"
column="dept_id" /collection
/resultMap
!-- Dept getDeptAndEmpByStepOne(@Param("id") Integer id);--
select id="getDeptAndEmpByStepOne" resultMap=""
select * from t_dept where dept_id = #{deptId}
/select
resultMap id="empAndDeptByStepResultMap" type="Emp"
id column="emp_id" property="empId" /id
result column="emp_name" property="empName" /result
result column="age" property="age" /result
result column="gender" property="gender" /result
association property="dept"
select="com.atguigu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"
column="dept_id" /association
/resultMap
!--List Emp getDeptAndEmpByStepTwo(@Param("dept_id") Integer dept_id);--
select id="getDeptAndEmpByStepTwo" resultType="Emp"
select * from t_emp where dept_id = #{deptId}
/select
以上就是自定义映射resultMap(自定义映射游戏按键)的详细内容,想要了解更多 自定义映射resultMap的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。