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 属性。
相关推荐
寒山李白2 小时前
Mybatis使用教程之XML配置方式实现增删改查
xml·java·mybatis
q***0563 小时前
Spring 中使用Mybatis,超详细
spring·tomcat·mybatis
李昊哲小课3 小时前
手写 Spring Boot 嵌入式Tomcat项目开发教学
spring boot·后端·tomcat
施嘉伟3 小时前
解决 Oracle 11g Data Guard ORA-16047 的实战经验
数据库·oracle
Violet_YSWY3 小时前
我就用mybatis作为与数据库交互,但我想用orm,最好的实现方案是啥
数据库·mybatis·交互
ttthe_MOon6 小时前
动静分离 + 负载均衡:Nginx 与 Tomcat 深度整合实战
nginx·tomcat·负载均衡
hygge9999 小时前
Spring Boot + MyBatis 整合与 MyBatis 原理全解析
java·开发语言·经验分享·spring boot·后端·mybatis
百***935016 小时前
Tomcat报404问题解决方案大全(包括tomcat可以正常运行但是报404)
java·tomcat
百***812716 小时前
Spring 中使用Mybatis,超详细
spring·tomcat·mybatis
lwhdjbcjdjd16 小时前
Nginx与Tomcat协作处理流程及数据流向
运维·nginx·tomcat