字段名和属性名不一致的情况,如何处理映射关系
一、给字段设置别名和使用全局配置处理字段名和属性名不一致
字段名和属性名不一致的情况,如何处理映射关系:
1、为查询的字段设置别名,和属性名保持一致
2、当字段符合MysQL的要求使用_,而属性符合java的要求使用驼峰此时可以在MyBatis的核心配置文件中设置一个全局配置:
<!--将下划线映射为驼峰-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
它可以自动将下划线映射为驼峰 如:emp_id : empId , emp_name : empName
下面给出两种写法:
//根据id查询员工信息
Emp getEmpByEmpId(@Param("empId") Integer empId);
<!--Emp getEmpByEmpId(@Param("empId") Integer empId);-->
<select id="getEmpByEmpId" resultType="Emp">
<!--1、设置别名-->
<!--select emp_id empId,emp_name empName,age,gender
from t_emp where emp_id=#{empId}-->
<!--2、设置全局配置-->
select * from t_emp where emp_id=#{empId}
</select>
@Test
public void testGetEmpByEmpId(){
SqlSession sqlSession= SqlSessionUtil.getSqlSession();
EmpMapper mapper=sqlSession.getMapper(EmpMapper.class);
Emp emp=mapper.getEmpByEmpId(1);
System.out.println(emp);
}
结果如下:
二、自定义映射resultMap
1、resultMap处理字段和属性的映射关系
resultMap:设置自定义映射属性:
id:表示自定义映射的唯一标识
type:查询的数据要映射的实体类的类型子标签
常用标签:
id:设置主键和实体类中属性的映射关系
result:设置普通字段和实体类中属性的映射关系
column:设置映射关系中表中的字段名,必须是SQL查询出来的某个字段
property:设置映射关系中实体类中的属性名,必须是处理的实体类类型中的属性名
association:设置多对一的映射关系(处理实体类类型的属性)
collection:设置一对多的映射关系属性(处理集合类型的属性)
javaType:设置要处理的属性的类型
<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