@TableId 注解
表ID主键注解,可以重复注解(同时适配各种数据库)
属性说明
属性 | 是否可空 | 默认值 | 说明 |
---|---|---|---|
value | 是 | IdAutoType.AUTO | 注解自增方式,默认数据库自增 |
dbType | 是 | 数据库类型 | |
sql | 是 | value =IdAutoType.SQL 时必填 | |
generatorName | 是 | value =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.GENERATOR | ID生成器 |
框架自带那些自增器?
generatorName | 说明 |
---|---|
IdentifierGeneratorType.DEFAULT | 推荐 ,和mpNextId一样,区别就是可以替换 |
IdentifierGeneratorType.mpNextId | 框架自带的一种基于雪花算法自增器 |
IdentifierGeneratorType.UUID | UDID自增器 |
如何自定义自增器
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;
}