mybatis中 useGeneratedKeys="true" keyProperty="id"这两个属性的作用
时间: 2023-11-27 13:05:43 浏览: 325
`useGeneratedKeys="true"`表示在向数据库插入新记录时,使用数据库自动生成的主键值。如果设置为`false`,则需要手动设置主键值。
`keyProperty="id"`表示将主键值赋值给Java对象中的哪个属性。这里的`id`是Java对象的属性名,需要与数据库中的主键列名一致。
举个例子,假设我们有一个`User`类,其中包含`id`、`name`、`age`三个属性,而数据库表中也有`id`、`name`、`age`三个列。如果我们想在向数据库插入新用户时,自动获取主键值并设置到`User`对象的`id`属性中,那么可以这样配置`<insert>`标签:
```xml
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user(name, age) values(#{name}, #{age})
</insert>
```
这样,在执行`insertUser`操作时,MyBatis会自动获取数据库生成的主键值,并将其设置到`User`对象的`id`属性中。
相关问题
useGeneratedKeys="true" keyProperty="id"这两个是什么意思
`useGeneratedKeys="true"` 和 `keyProperty="id"` 这两个属性是用于在 Mybatis 中插入数据时自动生成主键的。
`useGeneratedKeys` 属性是一个布尔值,表示是否使用自动生成的主键。如果该属性被设置为 true,则表示使用自动生成的主键,否则表示不使用。
`keyProperty` 属性表示自动生成的主键对应到 Java 对象中的哪个属性上。在插入数据后,自动生成的主键值会被设置到该属性中。
例如,在上面的例子中,`useGeneratedKeys="true"` 表示使用自动生成的主键,`keyProperty="id"` 表示自动生成的主键对应到 User 对象的 id 属性上。这样,在执行插入操作后,Mybatis 会将自动生成的主键值设置到 User 对象的 id 属性上。
添加useGeneratedKeys="true" keyProperty="ID"后怎么获取id
在MyBatis执行插入操作时,如果开启了自动生成主键的功能(useGeneratedKeys="true"),插入操作成功后会将生成的主键值赋值给指定的属性(keyProperty="ID")。可以通过以下两种方式获取插入数据的主键值:
1. 直接从插入的对象中获取主键值。例如,如果插入的对象是一个JavaBean,可以在插入操作之后直接从JavaBean的ID属性中获取生成的主键值。
2. 通过MyBatis的selectKey语句获取主键值。可以在插入操作之后,使用selectKey语句查询刚刚生成的主键值,然后将查询结果赋值给指定的属性。例如,可以使用以下方式获取主键值:
```
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="ID">
SELECT LAST_INSERT_ID()
</selectKey>
```
其中,resultType指定查询结果的类型,order指定查询语句的执行顺序,keyProperty指定将查询结果赋值给哪个属性。这个语句会查询MySQL数据库中自动生成的最后一个主键值,并将查询结果赋值给ID属性。
阅读全文