mybatis plus插入回调id
时间: 2025-05-17 17:37:23 浏览: 18
### MyBatis Plus 插入数据时回调获取生成的 ID 的实现方式
MyBatis Plus 是一款增强型的 MyBatis 框架,它简化了开发流程并提供了许多便捷的功能。其中,在插入数据时自动获取生成的主键 ID 功能是一个非常实用的设计。
#### 自动获取主键 ID 的原理
当使用 MyBatis Plus 进行数据插入操作时,框架内部通过 `BaseMapper` 接口中的 `insert()` 方法实现了这一功能。该方法不仅执行了数据库的插入操作,还能够将生成的主键值回填到实体对象中[^2]。这意味着开发者无需额外编写代码来手动查询刚插入的数据所对应的主键值。
以下是具体的实现细节:
1. **定义实体类**
需要在实体类中设置主键字段,并确保其支持自动生成策略(如 MySQL 中的 AUTO_INCREMENT 或者 UUID)。例如:
```java
@Data
public class User {
private Long id; // 主键字段
private String name;
private Integer age;
}
```
2. **创建 Mapper 接口**
定义一个继承自 `BaseMapper<T>` 的接口,并标注上 `@Mapper` 注解以注册为 Spring Bean。
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {}
```
3. **调用 insert() 方法**
调用 `UserMapper` 的 `insert()` 方法即可完成数据插入操作。此时,如果表结构允许自增主键,则新生成的主键会被自动填充至传入的对象实例中。
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void addUser(User user) {
int rowsAffected = userMapper.insert(user); // 执行插入操作
System.out.println("受影响行数:" + rowsAffected);
Long generatedId = user.getId(); // 获取生成的主键 ID
System.out.println("生成的主键 ID:" + generatedId);
}
}
```
上述代码片段展示了如何利用 MyBatis Plus 提供的基础能力快速实现插入逻辑的同时获得主键值。
#### 自动生成 SQL 语句
值得注意的是,除了简单的插入外,更新操作也会由 MyBatis Plus 自动生成相应的 SQL 语句[^3]。这进一步减少了手写复杂 SQL 的需求,提高了开发效率。
---
### 总结
综上所述,借助于 MyBatis Plus 的强大特性,只需简单几步就能轻松达成插入数据后立即取得主键 ID 的目标。这种设计极大地方便了日常业务场景下的编码工作。
---
阅读全文
相关推荐














