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 属性。
相关推荐
天空之城--17 小时前
Flutter Drift 完全指南:从原理到实战
jvm·flutter·oracle
奔跑吧树袋熊1 天前
多租户隔离该做到哪一层:从连接池到 ORM 的取舍
开发语言·数据库·oracle·系统架构
无巧不成书02181 天前
Apache Tomcat 9 下载全指南(Windows,Linux,macOS):版本选型、国内镜像、SHA-512 与 PGP 完整性校验
windows·tomcat·apache
YHHLAI1 天前
从零理解 Agent Memory 管理:内存记忆、文件持久化与上下文截断
数据库·oracle
Aaron - Wistron1 天前
Windows Server 配置
oracle
Dream-Y.ocean1 天前
鸿蒙平台 Apache Tomcat 管理控制台适配实战:基于 Electron 壳方案的真实 HTTP 服务器实现
tomcat·apache·harmonyos
惜分飞1 天前
记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复---惜分飞
数据库·oracle
无风听海1 天前
深入解析 Elasticsearch 的 match_phrase_prefix与 match_bool_prefix
大数据·elasticsearch·mybatis
无巧不成书02181 天前
Tomcat 下载后使用全指南:解压、环境配置、启动验证与常见问题排查
java·tomcat
隔窗听雨眠1 天前
Oracle TDE透明数据加密完全指南:从密钥库配置到生产运维的系统性实践
oracle·数据加密·tde