首页 > 基础资料 博客日记
resultMap 和 resultType 的字段映射覆盖问题
2024-03-15 16:00:03基础资料围观235次
这篇文章介绍了resultMap 和 resultType 的字段映射覆盖问题,分享给大家做个参考,收藏Java资料网收获更多编程知识
在MyBatis中,如果你使用resultType而不是resultMap,并且结果集中有同名字段,则默认情况下后出现的字段值会覆盖前面的字段值。这是因为MyBatis在将结果集映射到Java对象时,是按照字段名称一一对应进行赋值的。
但若你希望更精确地控制映射关系,并且避免自动覆盖行为,则可以用resultMap来显式指定每个字段应该映射到哪个属性上,它在遇到同名字段时不会进行覆盖,尤其是当涉及到多表查询时。
例如,如果有两个表中的字段名相同,你可以分别为它们起不同的别名:
<select id="selectExample" resultMap="combinedResult">
SELECT
t1.id as t1_id,
t2.id as t2_id,
...
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.t1_id
</select>
<resultMap id="combinedResult" type="YourJavaType">
<id property="idFromTable1" column="t1_id"/>
<!-- 其他来自table1的字段 -->
<id property="idFromTable2" column="t2_id"/>
<!-- 其他来自table2的字段 -->
</resultMap>
这样通过column属性指定了数据库中的字段别名与Java实体类中属性的对应关系,即使字段名相同,也能确保正确映射到不同属性上而不会被覆盖。
文章来源:https://www.cnblogs.com/emanjusaka/p/18075562
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: