ORM,Object-Relationl Mapping,对象关系映射,它的作用是在关系型数据库和对 象之间作一个映射处理.
在MyBatis中,ORM映射的配置主要包括两个部分:数据库表和Java对象之间的映射关系配置,以及SQL语句与Java方法之间的映射关系配置。
MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系,二者不同时无法自动ORM.
有以下两种方法提供参考:
1.列的别名
在SQL中使用 as 为查询字段添加列别名,以匹配属性名:
public List<Role> findAll();
<select id="findAll" resultType="com.by.pojo.Role" >
select id, role_name as roleName, role_desc as roleDesc from role
</select>
2.结果映射
使用ResultMap
标签手动映射,解决实体字段和数据表字段不一致的问题
public List<Role> findAll2();
<!--
id:和select查询标签的返回值保持一致
type: 映射实体的全类名
-->
<resultMap id="findAll2ResultMap" type="com.by.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="findAll2" resultMap="findAll2ResultMap" >
select * from role
</select>
- ResultMap元素是Mybatis中最重要最强大的元素
- ResultMap的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。
- ResultMap最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们。