什么是ORM映射?
MyBatis只能自动维护数据表的“列名”与java类的“属性名”相同时的对应关系,二者不同时无法自动实现ORM映射,比如:
列的别名
在SQL中使用as为查询字段添加列的别名,以匹配属性名:
public List<Role> selectAll();
<select id = "selectAll" resultType = "com.hh.pojo.Role">
select id, role_name as roleName, role_desc as roleDesc from role
</select>
但是,如果我们要查询的有很多,使用别名就会显得很麻烦,这就说到了结果映射的作用!
结果映射
我们需要使用ResultMap标签手动进行映射,解决实体字段和数据表字段的不一致问题
public List<Role> selectAll2();
<!--
id:和select查询标签的返回值保持一致
type:映射实体的全类名
-->
<resultMap id = "selectAll2ResultMap" type = "com.hh.pojo.Role">
<!--
描述主键字段的映射关系:
property:实体类的属性
column:数据库表的字段名称
-->
<id property = "id" column = "id" />
<!--
描述非主键字段的映射关系:
property:实体类的属性
column:数据库表的字段名称
-->
<result property = "roleName" column = "role_name" />
<result property = "roleDesc" column = "role_desc" />
</resultMap>
<select id = "selectAll2" resultMap = "selectAll2ResultMap">
select * from role
</select>