MyBatis 教程

MyBatis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/mybatis-insert-return-auto-increment-id.html

Mybatis insert 插入操作返回自增的主键值

MyBatis insert 插入语句操作 MyBatis insert 插入语句操作


Mybatis 插入操作可以通过 insert 标签中添加 useGeneratedKeys 和 keyProperty 2 个配置来实现返回自增的主键值。在实际的开发中,插入数据库后往往需要得到自增 ID 值,然后使用这个值进行一些其他的操作。

配置方式

Mybatis 在插入数据时,往往通过 Java 对象形式传递要添加的数据,

配置示例如下:

<sql id="tableName">
  user
</sql>

<insert id="save" useGeneratedKeys="true" keyProperty="id">
  INSERT INTO
  <include refid="tableName"/>
  (
    user_name, user_email
  )
  VALUES
  ( #{userName}, #{userEmail} )
</insert>

核心点是在 insert 标签上配置了如下 2 个属性:

useGeneratedKeys="true"
keyProperty="id"
useGeneratedKeys
(仅对 insert 和 update 有用)MyBatis 会使用 JDBC 的 getGeneratedKeys 方法来取出数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段),默认值为 false
keyProperty
(仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 ResultSet.getGeneratedKeys 的返回值后将其赋值给 keyProperty 配置的 id 属性,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表,这种情况下通常还需要设置 keyColumn 属性,按顺序指定数据库的列,这里列的值会和 keyProperty 配置的属性一一对应。
Mybatis 的 insert 语句操作相比 select 简单的多。只有让它返回主键值时,由于不同数据库的主键生成方式不同,这种情况下会 ...
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设 ...
MySQL 插入数据操作使用 INSERT INTO 语句,它属于 DML(数据操作语言)范畴,该语句插入方式支持从简单的添加操作到唯一键( ...
下面列出了 Mybatis 相关开发中常遇到的相关问题的解决方案。 ...
MyBatis 的 xml 配置中如果直接把包含大于/小于的 sql 写入,提示编译错误,如何解决此类问题? ...