标签:映射 结果 resultType resultMap 嵌套 自动 使用 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的自动映射的三种行为:
- 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 | 自动映射 | 自动映射 | 自动映射 |
标签:映射,结果,resultType,resultMap,嵌套,自动,使用,Mybatis 来源: https://www.cnblogs.com/qmcl-biu/p/15202413.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。