mybatis中的useGeneratedKeys和keyProperty

在 MyBatis 中,<insert> 标签用于定义插入数据的 SQL 语句。useGeneratedKeyskeyProperty 属性:常用于获取数据库自动生成的主键。以下是这两个属性的详细解释:

useGeneratedKeys

  • 作用: 指示 MyBatis 是否 使用JDBC 的 getGeneratedKeys 方法来获取数据库表自动生成的主键值
  • 值: 可以是 truefalse

keyProperty

  • 作用: 将数据库表自动生成的主键值 赋值 给传入的Java 对象的哪个属性
  • 值: Java 对象的属性名。

示例代码

xml 复制代码
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
    insert into user(openid, name, phone, sex, id_number, avatar, create_time)
    values (#{openid}, #{name}, #{phone}, #{sex}, #{idNumber}, #{avatar}, #{createTime})
</insert>

代码解释

  1. useGeneratedKeys="true":

    • 表示 MyBatis 在执行插入操作后,会调用 JDBC 的 getGeneratedKeys 方法获取数据库生成的主键值。
  2. keyProperty="id":

    • 指定生成的主键值将赋值给传入的 Java 对象的 id 属性。

工作流程

  1. 执行插入 SQL 语句。
  2. 数据库生成一个新主键值(如自增 ID)。
  3. MyBatis 使用 getGeneratedKeys 方法获取生成的主键值。
  4. 将生成的主键值赋值给对应 Java 对象的 id 属性。
相关推荐
sin22013 小时前
MyBatis的执行流程
java·开发语言·mybatis
遇见火星5 小时前
MySQL常用命令大全(2026最新版)
数据库·mysql·oracle
未来之窗软件服务5 小时前
计算机等级考试—数据库完整性进销存—东方仙盟练气期
数据库·oracle·计算机软考·仙盟创梦ide·东方仙盟
weixin_541299946 小时前
鸿蒙应用开发:保存应用数据 - 关系型数据库的使用
数据库·oracle·harmonyos
wei_shuo6 小时前
Oracle数据库迁移至KingbaseES:完整实战指南
数据库·oracle
高山上有一只小老虎6 小时前
mybatisplus实现分页查询
java·spring boot·mybatis
赵渝强老师7 小时前
【赵渝强老师】国产金仓数据库的数据库对象
数据库·postgresql·oracle·oceanbase·国产数据库
oioihoii9 小时前
Oracle迁移KingbaseES实战
数据库·oracle
zAnllYrAbIo9 小时前
探索基于QCustomPlot的强大数据可视化工具
oracle
赵渝强老师10 小时前
【赵渝强老师】Oracle多租户容器数据库
数据库·oracle