Skip to content

@TableId 注解

表ID主键注解,可以重复注解(同时适配各种数据库)

属性说明

属性是否可空默认值说明
valueIdAutoType.AUTO注解自增方式,默认数据库自增
dbType数据库类型
sqlvalue =IdAutoType.SQL 时必填
generatorNamevalue =IdAutoType.GENERATOR 时必填

默认 数据库自增

使用示例

java
@Table
public class SysUser {
    
    @TableId
    private Integer id;
}

同时适配多个数据库

java
@Data
@Table
public class IdTest {


    @TableId
    @TableId(dbType = DbType.H2, value = IdAutoType.AUTO)
    @TableId(dbType = DbType.SQL_SERVER, value = IdAutoType.AUTO)
    @TableId(dbType = DbType.DB2, value = IdAutoType.GENERATOR , generatorName= IdentifierGeneratorType.mpNextId)
    @TableId(dbType = DbType.PGSQL, value = IdAutoType.SQL, sql = "select nextval('id_test_id_seq')")
    @TableId(dbType = DbType.ORACLE, value = IdAutoType.SQL, sql = "select id_test_seq.NEXTVAL FROM dual")
    private Long id;

    private LocalDateTime createTime;

}

框架自增方式有那些?

类型说明
IdAutoType.AUTO数据库自增
IdAutoType.NONE无,需要自己设置ID值
IdAutoType.SQL配置sql属性,例如 sql = "select nextval('id_test_id_seq')"
IdAutoType.GENERATORID生成器

框架自带那些自增器?

generatorName说明
IdentifierGeneratorType.DEFAULT推荐,和mpNextId一样,区别就是可以替换
IdentifierGeneratorType.mpNextId框架自带的一种基于雪花算法自增器
IdentifierGeneratorType.UUIDUDID自增器

如何自定义自增器

1. 实现 IdentifierGenerator

java
/**
 * 基于IdWorker 自增器
 */
public class IdWorkerGenerator implements IdentifierGenerator<Long> {

    @Override
    public Long nextId(Class<?> entity) {
        return IdWorker.INSTANCE.nextId();
    }
}

2. 注册生成器

在项目启动时 执行即可:

IdentifierGeneratorFactory.register("xx",new IdWorkerGenerator());

3. 如何用?

java
@Data
@Table
public class IdTest {
    
    @TableId(value = IdAutoType.GENERATOR , generatorName= "xx")
    private Long id;

    private LocalDateTime createTime;
}