其他分享
首页 > 其他分享> > Mybatis结果映射

Mybatis结果映射

作者:互联网

Mybatis的结果映射

使用resultMap

Mybatis框架使用resultMap元素来自定义结果映射。

使用场景如下:

1. 数据库字段信息和对象属性不一致

​ ①,若不一致的字段较少,可以在SQL语句中使用别名处理

SELECT 字段1,
数据库的字段2 as 实体类的属性
FROM 表名

​ ②,若不一致的字段较多,可以使用resultMap

UserMapper.xml中定义如下:

<resultMap type="类的全限定名或别名" id="起名(唯一)">
	<id property="实体类中的属性" column="表中的列名"/>  <!--id:主键-->
	<result property="实体类中的属性" column="表中的列名"/>  <!--result:普通属性-->
</resultMap> 
<select id="getAllUser" resultMap="resultMap的id名" >
    //这里是查询语句
</select>

2. 复杂的联合查询,可以自由控制结果(这个在后面的级联关系中说)

resultMap的自动映射行为

设置自动映射:

<settings>
	<setting name="autoMappingBehavior" value="PARTIAL/NONE/FULL"/>
</settings>

resultMap的自动映射的三种行为:

注意:以上是针对使用 resultMap 的情况而言,如果使用 resultType 则有些不同。例如,resultType不支持嵌套映射,无论autoMappingBehavior设置为PARTIAL还是FULL,实体类都会使用自动映射,而实体类中的关联属性都不会被初始化,始终为null。并且,由于resultType完全依赖自动映射,如果autoMappingBehavior设置为NONE,resultType 会失效,无法初始化实体类对象而返回 null ,此时返回查询结果只能使用 resultMap 手动映射。自动映射行为对 resultMap 和 resultType 的影响如下表所示:

自动映射行为 resultType(不支持嵌套映射) 没有嵌套映射的resultMap 有嵌套映射的resultMap
NONE 失效 手动映射 手动映射
PARTIAL 自动映射 自动映射 手动映射
FULL 自动映射 自动映射 自动映射

标签:映射,结果,resultType,resultMap,嵌套,自动,使用,Mybatis
来源: https://www.cnblogs.com/qmcl-biu/p/15202413.html