mybatis新增后返回主键id
时间: 2023-04-01 12:01:41 浏览: 124
可以使用selectKey标签来实现,在insert语句中添加selectKey标签,设置keyProperty为主键字段名,order为AFTER,然后在标签中设置select last_insert_id(),这样就可以在新增后返回主键id了。
相关问题
mybatis新增返回主键id
在MyBatis中,有两种方式可以实现在插入数据后返回主键ID的需求。
第一种方式是在XML文件中设置属性。你需要在对应的Mapper接口的insert方法上添加@Options注解,并设置useGeneratedKeys属性为true,keyProperty属性为你想要返回的主键ID字段的名称。例如:
```java
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("INSERT INTO table_name (column1, column2) VALUES (#{value1}, #{value2})")
int insertData(Data data);
```
这样,在插入数据后,你就可以通过data.getId()来获取到返回的主键ID。
第二种方式是使用注解。你可以在对应的Mapper接口的insert方法上添加@SelectKey注解,并设置statement属性为获取自增ID的SQL语句,keyProperty属性为你想要返回的主键ID字段的名称。例如:
```java
@SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = Long.class)
@Insert("INSERT INTO table_name (column1, column2) VALUES (#{value1}, #{value2})")
int insertData(Data data);
```
这样,在插入数据后,你同样可以通过data.getId()来获取到返回的主键ID。
需要注意的是,无论是哪种方式,你都需要确保返回的主键ID对应的字段是自增主键,并且在插入数据时,该字段的值为null。另外,如果你使用的是PostgreSQL数据库,可以使用"select currval('sequence_name')"来获取自增ID的值。
#### 引用[.reference_title]
- *1* *3* [mybatis插入数据后返回自增主键ID的2种方式](https://blog.csdn.net/lchmyhua88/article/details/125132281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Mybatis框架新增数据返回主键id](https://blog.csdn.net/SGdan_qi/article/details/104222696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
mybatis xml新增数据返回主键id
在 MyBatis 中,插入数据并返回主键 ID 有多种方式可以实现,其中一种常用的方式是使用 `useGeneratedKeys` 和 `keyProperty` 属性。
具体实现步骤如下:
1. 在 Mapper.xml 中的插入语句中添加 `useGeneratedKeys` 和 `keyProperty` 属性:
```xml
<insert id="insert" parameterType="com.example.User" useGeneratedKeys="true" keyProperty="id">
insert into user(name, age) values(#{name}, #{age})
</insert>
```
其中 `useGeneratedKeys` 属性表示是否使用自动生成的主键,`keyProperty` 属性表示将自动生成的主键值存储到哪个属性中。
2. 在对应的实体类中添加主键属性,并生成相应的 getter 和 setter 方法:
```java
public class User {
private Long id;
private String name;
private Integer age;
// getter 和 setter 方法省略
}
```
3. 在执行插入操作后,即可通过实体类的主键属性获取自动生成的主键 ID:
```java
User user = new User();
user.setName("Tom");
user.setAge(18);
userMapper.insert(user);
Long id = user.getId(); // 获取自动生成的主键 ID
```
这样就可以在插入数据的同时返回自动生成的主键 ID 了。