resultMap 和 resultType 的字段映射覆盖问题

这篇具有很好参考价值的文章主要介绍了resultMap 和 resultType 的字段映射覆盖问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在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.toymoban.com/news/detail-840312.html

到了这里,关于resultMap 和 resultType 的字段映射覆盖问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis:生命周期、作用域、结果集映射 ResultMap、日志、分页、使用注解开发、Lombok

    理解不同 作用域 和 生命周期 类别是至关重要的,因为错误的使用会导致非常严重的 并发问题 。 SqlSessionFactoryBuilder 一旦创建了 SqlSessionFactory,就不再需要它了; 最佳作用域 是方法作用域(也就是局部方法变量)。 SqlSessionFactory :相当于 数据库连接池 一旦被创建就应该在

    2024年02月02日
    浏览(44)
  • 详解Mybatis查询之resultType返回值类型问题【4种情况】

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 在Mybatis中,resultType属性是 selcet元素 【映射查询语句】中常用的属性之一,这个属性是什么意思呢?Mybatis官方对它的描述如下所示: 期望从这条语句中返回结果的类全限定

    2024年02月15日
    浏览(35)
  • Mybatis Plus之DQL(条件查询方式、查询投影、查询条件设定、字段映射与表名映射)

    增删改查四个操作中,查询是非常重要的也是非常复杂的操作,这块需要我们重点学习下,这节我们主要学习的内容有: 条件查询方式 查询投影 查询条件设定 字段映射与表名映射 1.1 条件查询的类 MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的

    2024年02月05日
    浏览(45)
  • 【Java】Mybatis查询数据库返回JSON格式的字段映射到实体类属性

    今天遇到了一个bug,大概就是数据库(Mysql)中有一个 type 类型字段,数据类型为json,大概是这样的:[“苹果”,“香蕉”,“葡萄”]的数据格式,这个bug的问题所在呢就是查询后这个json格式的数据无法映射到我们实体类的属性上,解决方案如下: 实体类的配置: @TableField

    2024年02月15日
    浏览(34)
  • day40-Mybatis(resultMap拓展)

    1.2.3 1.数据库字段和javabean实体类属性不一致时 解决方案1:将sql语句中给予别名(别名同javabean中实体类保持一致) 解决方案2:使用resultMap 2.两表关联(用户表和角色表关联查询) 3.association association : (1)复杂的类型关联,一对一 (2)内部嵌套 (3)映射一个嵌套Javab

    2024年02月16日
    浏览(31)
  • MyBatis中的ResultMap有什么作用

    MyBatis是一款广泛使用的Java持久层框架,它简化了数据库访问和数据映射的工作。在MyBatis中,ResultMap是一个强大的工具,用于将数据库查询结果映射到Java对象上。本文将深入探讨MyBatis中的ResultMap,解释它的作用以及如何使用它来提高数据访问的效率和可维护性。 在开始之前

    2024年02月07日
    浏览(31)
  • 详解Mybatis之自动映射 & 自定义映射问题

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 Mybatis中的 自动映射 不是什么高大上的技术名词,而是我们使用Mybatis框架进行持久化层开发时常用select元素中的常见属性 resultType , 它可以自动将数据库内表中的字段与类

    2024年02月15日
    浏览(22)
  • Mybatis使用collection映射一对多查询分页问题

    场景:页面展示列表,需要查询多的字段,和一的字段。并且还要分页。 这时候直接想到的是手写sql。 原来的sql 。 正常查询tags有两条。加上分页条件,多的一端只有一条数据。 修改之后的sq。满足分页正常展示多的一端。

    2024年02月15日
    浏览(24)
  • Mybatis-Plus不能更新对象字段为空值问题解决

    问题描述: 在使用Mybatis-Plus调用updateById方法进行数据更新默认情况下是不能更新空值字段的,而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况,该如何解决呢? 原因分析: Mybatis-Plus中字段的更新策略是通过FieldStrategy属性控制的。在实体字段上,如果不通

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包