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 属性。
相关推荐
前方一片光明1 小时前
SQL SERVER——生成sql:删除所有log表中,user_name是某用户的数据
数据库·sql·oracle
自在极意功。3 小时前
MyBatis 动态 SQL 详解:从基础到进阶实战
java·数据库·mybatis·动态sql
曹牧3 小时前
Oracle:判断一个字符串出现次数
数据库·oracle
2301_800256114 小时前
地理空间数据库中的CPU 和 I/O 开销
数据库·算法·oracle
7ioik4 小时前
为什么lnnoDB存储引擎默认使用B+树作为索引结构?
数据库·b树·oracle
利刃大大6 小时前
【MyBatis】MyBatis操作动态sql && MyBatisGenerator
数据库·sql·mybatis
柒.梧.8 小时前
MyBatis实战精讲:完整用户CRUD操作全解析
mybatis
程序员阿鹏8 小时前
责任链模式
java·spring·servlet·tomcat·maven·责任链模式
晴天¥8 小时前
Oracle中的安全管理(用户、权限、角色)
数据库·安全·oracle
电商API&Tina9 小时前
【电商API接口】关于电商数据采集相关行业
java·python·oracle·django·sqlite·json·php