MyBatis Plus提供以下几种方式获取自动生成的主键:
1. 使用@TableId注解
@TableId(type = IdType.AUTO)
private Integer id;
指定IdType.AUTO,表示自动增长ID。
2. 实现 IdentifierGenerator 接口
public class CustomKeyGenerator implements IdentifierGenerator {
public Number generate(Object entity) {
return 1; // 自定义 ID 生成逻辑
}
}
然后配置到实体类:
@TableId(type = IdType.ASSIGN_ID,generator = "customKeyGenerator")
private Integer id;
@TableId(generator = "customKeyGenerator", assignType = true)
private Integer customId;
3. 使用 sequence 生成主键
针对支持序列的数据库,可以获取下一个序列值作为主键:
@TableId(type = IdType.INPUT)
private Long id;
@Override
public Long getId() {
return sequence.getNextId();
}
使用 @TableId(type = IdType.INPUT)表示主键由输入值指定。
然后自己调用序列获取主键值并赋值给 ID 属性。
4.插入成功后获取
// 插入时不指定 ID
userMapper.insert(user);
// 获取自增主键
Integer id = user.getId();
在插入成功后,MyBatis Plus会帮助把自动生成的主键设置到实体类中。
总的来说,Mybatis Plus提供了多种获取主键值的方式:
- 使用@TableId注解,由数据库自动生成
- 实现IdentifierGenerator接口,自定义主键生成逻辑
- 使用序列 sequence
- 插入成功后,自动获取主键值
以上方法可以满足不同DB和应用的主键获取需求。