关于在 Mybatis 中使用 record 关键字来定义 JavaBean

这篇具有很好参考价值的文章主要介绍了关于在 Mybatis 中使用 record 关键字来定义 JavaBean。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

经测试,正常情况下使用 record 是没有问题的,但若是使用了 resultMap,将会导致错误:

There is no setter for property named 'xxx' in 'xxx'
argument type mismatch

首先, record 类型没有无参构造函数,所以在反射过程中无法创建对应类型,导致了argument type mismatch错误。

那如果给 record 类型的类加上无参构造函数呢?

会出现以下错误:

There is no setter for property named 'xxx' in 'xxx'

可以看到 Mybatis 可以找到对应的类了,但是仍然会报There is no setter for property named 'xxx' in 'xxx',这是由于 record 类型中所有的变量均为 final 类型,record 也并没有生成 set 方法导致的。

所以总的来说,虽然 record 可以极大的简化 Bean 的编写,并且可以摆脱 Lombok,但是其特性决定了它并不适合用来编写 Mybatis 的 Bean。
除非你的 Bean 的属性只有基本类型(笑


resultMap 部分:文章来源地址https://www.toymoban.com/news/detail-453249.html

<select id="getTeacher" resultType="Teacher">
    select * from mybatis.teacher where id = #{tid}
</select>

<resultMap id="studentMapper" type="Student">
    <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>

<select id="getStudents" resultMap="studentMapper">
    select * from mybatis.student;
</select>

到了这里,关于关于在 Mybatis 中使用 record 关键字来定义 JavaBean的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 关于c++中mutable、const、volatile这三个关键字及对应c++与汇编示例源码

    这哥三之间的关系是有趣的,不妨看看这个: cv (const and volatile) type qualifiers - cppreference.com permits modification of the class member declared mutable even if the containing object is declared const. 即便一个对象是const的,它内部的成员变量如果被mutable修饰,则此成员变量依旧可以被修改。 很常见,

    2024年02月13日
    浏览(38)
  • 【Go 基础篇】Go语言关键字和预定义标识符解析:探索编程的基石与核心要素

    在计算机编程中,(Keywords)和预定义标识符(Predefined Identifiers)是编程语言的核心要素,它们在语法结构和语言功能中起到重要作用。在Go语言(Golang)中,和预定义标识符定义了编程的基本规则和构建块,是实现功能的关键。本篇博客将深入探讨Go语言中的关

    2024年02月12日
    浏览(69)
  • 【C++100个关键字使用介绍】

    C++ 中的是用于表示语言中预先定义好的、具有特殊意义的单词。这些不能用作变量名、函数名或任何其他标识符名称。尽管目前 C++ 没有一百个,但是 C++11、C++14、C++17 和 C++20 的标准中持续增加了一些。 以下是 C++ 中一些的列表和简短说明,

    2024年01月21日
    浏览(46)
  • C#中“ref“关键字的使用

    C# 中的 ref 是一个非常重要的概念,它用于在方法调用时传递变量的引用。在这篇博客中,我们将详细介绍 ref 的使用方法、原理以及它在实际编程中的应用。 ref 用于指定一个参数是按引用传递的。这意味着当一个方法接受一个 ref 参数时,它实际上接收

    2024年02月22日
    浏览(37)
  • 使用VSCode在文件中查找关键字

    在使用VSCode编辑器时,经常需要在文件中查找特定的或文本。VSCode提供了强大的搜索功能,可以帮助我们快速定位并找到所需的内容。本文将介绍如何在VSCode中进行搜索。 在VSCode中查找的方法如下: 打开目标文件:首先,打开你想要在其中进行搜

    2024年02月04日
    浏览(66)
  • C++ -- 学习系列 static 关键字的使用

    static 是 C++ 中常用的,被 static 修饰的变量只会在 静态存储区 (常量数据也存放在这里) 被分配一次内存,生命周期与整个程序一样,随着程序的消亡而消亡。 1. 在文件中定义的 静态全局变量 2. 在函数中定义的静态变量 3. 类的静态成员变量 4. 静态类对象 5. 类的静

    2024年02月09日
    浏览(50)
  • 多线程系列(四) -volatile关键字使用详解

    在上篇文章中,我们介绍到在多线程环境下,如果编程不当,可能会出现程序运行结果混乱的问题。 出现这个原因主要是,JMM 中主内存和线程工作内存的数据不一致,以及多个线程执行时无序,共同导致的结果。 同时也提到引入 synchronized 同步锁,可以保证线程同步,让多

    2024年02月21日
    浏览(58)
  • mysql常见的需求,对于关键字的使用

    如何使用MySQL将列数据转化为逗号分隔的形式。我们可以使用内置函数GROUP_CONCAT()来实现这个功能,也可以根据实际需求自定义一个函数。这种技术在一些需要对数据进行汇总或者展示的场景中非常有用。 SELECT GROUP_CONCAT(x.ancestor) as ancestor FROM ce_module_user.sys_dept_relation x WHERE d

    2024年01月18日
    浏览(73)
  • 使用less命令搜索文件中的关键字

    less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。 语法 less [参数] 文件 参数说明: -b 缓冲区大小 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键

    2024年02月12日
    浏览(62)
  • Final关键字的使用技巧及其性能优势

    Java中的final用于修饰变量、方法和类,可以让它们在定义后不可更改,从而提高程序的稳定性和可靠性。此外,final还有一些使用技巧和性能优势,本文将详细介绍它们。 在Java中,final用于修饰变量、方法和类,其基本用法如下: 修饰变量 当我们使用f

    2024年02月03日
    浏览(130)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包