首页 > 其他 > 详细

Mybatis结果映射

时间:2021-08-30 06:13:37      阅读:21      评论:0      收藏:0      [点我收藏+]

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的自动映射的三种行为:

  • NONE:禁用自动映射,仅为手动映射的属性赋值。
  • PARTIAL:默认行为,对于没有嵌套映射的resultMap使用自动映射;而对于有嵌套映射的resultMap不使用自动映射,仅为手动映射的属性赋值。
  • FULL:全部使用自动映射,即使有嵌套映射的resultMap也会使用自动映射。

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

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

Mybatis结果映射

原文:https://www.cnblogs.com/qmcl-biu/p/15202413.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!