springboot中mybatis插入数据后返回id
时间: 2024-12-23 18:22:13 浏览: 14
在Spring Boot项目中,结合MyBatis进行数据插入并期望获取自动生成的ID通常涉及到一些步骤。首先,你需要配置好MyBatis的动态SQL以及数据库的ID生成策略。
1. **设置Mapper XML文件**:创建一个Mapper接口和对应的XML映射文件。例如:
```xml
<mapper namespace="com.example.demo.mapper.UserMapper">
<insert id="insertUser" parameterType="com.example.demo.entity.User">
INSERT INTO user (username, password) VALUES (#{username}, #{password})
SELECT LAST_INSERT_ID() AS id;
</insert>
</mapper>
```
这里的`LAST_INSERT_ID()`是一个SQL函数,用于获取上一条插入操作的自动增长ID。
2. **编写Repository接口**:在Spring Data JPA风格的Repository接口中声明保存方法,并注入相应的Mapper接口:
```java
public interface UserRepository extends JpaRepository<User, Long> {
@Insert("CALL ${insertUser}")
@Select("SELECT last_insert_id() as id")
Long insert(User user);
}
```
这里使用了`@Insert`注解来进行插入操作,并通过占位符`${insertUser}`引用Mapper接口中的`insertUser`方法,同时使用`@Select`注解选择返回值。
3. **调用服务层方法**:在服务层,你可以像这样调用Repository的`insert`方法并获取新生成的ID:
```java
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User createUser(User user) {
User savedUser = userRepository.insert(user);
return savedUser;
}
}
```
阅读全文