自定义映射resultMap(解决属性和字段的不一致)
自定义映射resultMap
1 . resultMap处理字段和属性的映射关系:
若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射
package com.atguigu.mybatis.mapper;
import com.atguigu.mybatis.pojo.Emp;
import java.util.List;
public interface EmpMapper {
/**
* @return
* 查询所有的员工信息
*/
List<Emp> getAllEmp();
}
第一种方法:
<!-- 为字段起别名,保持和属性名的一致-->
</select>
<select id="getAllEmp" resultType="Emp">
select eid,emp_name empName,age,sex,email from t_emp
</select>
第二种方法:
<!-- 映射是有规则的:
将_下划线字段映射为驼峰,emp_name:empName
(在核心配置文件中配置)
(可以参考mybatis官方文档)
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<select id="getAllEmp" resultType="Emp" >
select * from t_emp
</select>
![]()
第三种方法:
<!--
自定义映射,所以要设置字段和属性的映射关系,通过resultMap标签来设置自定义映射的
通过sql语句就会通过resultMap所设置的自定义映射的关系然后进行映射
resultMap:设置自定义映射关系
id:唯一标识(不能重复)
type:设置映射关系中的实体类类型
子标签:
id:设置主键的映射关系
result:设置普通字段映射关系
属性:
property:设置映射关系中的属性名,必须type属性所设置的实体类型中的属性名
column:设置映射关系中的字段名,必须是sql语句查询出的字段名
resultMap:只在查询功能中有用(增删改不需要设置映射关系)
-->
<!--List<Emp> getAllEmp();-->
<resultMap id="empResultMap" type="Emp">
<id property="eid" column="eid"></id>
<result property="empName" column="emp_name"></result>
<result property="age" column="age"></result>
<result property="sex" column="sex"></result>
<result property="empName" column="emp_name"></result>
<result property="email" column="email"></result>
</resultMap>
<select id="getAllEmp" resultMap="empResultMap">
select * from t_emp
</select>
测试类:
/**
* 解决字段名和属性名不一致的情况:
* ①为字段起别名,保持和属性名的一致
* ②设置全局配置,将_自动映射为驼峰(满足条件:属性符合属性规则,字段符合字段规则)
* <setting name="mapUnderscoreToCamelCase" value="true"/>
* ③通过resultMap设置自定义的映射关系
*/

浙公网安备 33010602011771号