目录
一.什么是ORM映射
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系,二者不同时无法自动ORM,如下:
ORM的优缺点
- 优点: orm的技术特点,提高了开发效率。 可以自动对实体Entity对象与数据库中的Table进行字段与属性的映射;不用直接SQL编码,能够像操作对象一样从数据库中获取数据
- 缺点: orm会牺牲程序的执行效率和会固定思维模式,在从系统结构上来看,采用orm的系统多是多层系统的,系统的层次太多,效率就会降低,orm是一种完全面向对象的做法,所以面向对象的做法也会对性能产生一定的影响。
二.列的别名
在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>
如果我们的查询很多,都使用别名的话写起来岂不是很麻烦,有没有别的解决办法呢?
三.结果映射
使用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>