在springboot中新增后返回当前数据id
时间: 2024-02-09 14:11:16 浏览: 156
MyBatis insert操作插入数据之后返回插入记录的id
5星 · 资源好评率100%
在Spring Boot中,可以使用JdbcTemplate或MyBatis来操作数据库,并且都支持返回自动生成的ID。
1.使用JdbcTemplate
在使用JdbcTemplate时,可以使用KeyHolder来获取插入记录的ID。示例代码如下:
```
@Autowired
private JdbcTemplate jdbcTemplate;
public Long createUser(User user) {
final String INSERT_SQL = "INSERT INTO user(name, age) VALUES(?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, user.getName());
ps.setInt(2, user.getAge());
return ps;
}, keyHolder);
return keyHolder.getKey().longValue();
}
```
2.使用MyBatis
在使用MyBatis时,可以在Mapper.xml中使用<selectKey>标签,或者在Mapper接口方法上使用@Options注解。示例代码如下:
Mapper.xml方式:
```
<insert id="insertUser" parameterType="com.example.User">
insert into user(name, age) values(#{name}, #{age})
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
select last_insert_id()
</selectKey>
</insert>
```
@Options注解方式:
```
@Insert("insert into user(name, age) values(#{name}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insertUser(User user);
```
无论使用哪种方式,都可以在插入数据后获取自动生成的ID。
阅读全文