在 MyBatis 中,<insert>
标签用于定义插入数据的 SQL 语句。useGeneratedKeys
和 keyProperty
属性:常用于获取数据库自动生成的主键。以下是这两个属性的详细解释:
useGeneratedKeys
- 作用: 指示 MyBatis 是否 使用JDBC 的
getGeneratedKeys
方法来获取数据库表自动生成的主键值。 - 值: 可以是
true
或false
。
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>
代码解释
-
useGeneratedKeys="true":
- 表示 MyBatis 在执行插入操作后,会调用 JDBC 的
getGeneratedKeys
方法获取数据库生成的主键值。
- 表示 MyBatis 在执行插入操作后,会调用 JDBC 的
-
keyProperty="id":
- 指定生成的主键值将赋值给传入的 Java 对象的
id
属性。
- 指定生成的主键值将赋值给传入的 Java 对象的
工作流程
- 执行插入 SQL 语句。
- 数据库生成一个新主键值(如自增 ID)。
- MyBatis 使用
getGeneratedKeys
方法获取生成的主键值。 - 将生成的主键值赋值给对应 Java 对象的
id
属性。