MyBatis Plus获取主键的方式有几种?

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和应用的主键获取需求。