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 配置的属性一一对应。