@TableId 注解
表ID主键注解,可以重复注解(同时适配各种数据库)
支持注解范围
支持字段、set方法上注解,同时支持字段、方法覆盖行为
属性说明
| 属性 | 是否可空 | 默认值 | 说明 |
|---|---|---|---|
| value | 是 | IdAutoType.AUTO | 注解自增方式,默认数据库自增 |
| dbType | 是 | 数据库类型 | |
| sql | 是 | value =IdAutoType.SQL 时必填 | |
| generator | 是 | value =IdAutoType.GENERATOR 时必填 |
默认 数据库自增
使用示例
java
@Table
public class SysUser {
@TableId
private Integer id;
}同时适配多个数据库
java
@Data
@Table
public class IdTest {
@TableId
@TableId(dbType = DbType.Name.H2, value = IdAutoType.AUTO)
@TableId(dbType = DbType.Name.SQL_SERVER, value = IdAutoType.AUTO)
@TableId(dbType = DbType.Name.DB2, value = IdAutoType.GENERATOR , generator= Generators.nextId)
@TableId(dbType = DbType.Name.PGSQL, value = IdAutoType.SQL, sql = "select nextval('id_test_id_seq')")
@TableId(dbType = DbType.Name.ORACLE, value = IdAutoType.SQL, sql = "select id_test_seq.NEXTVAL FROM dual")
private Long id;
private LocalDateTime createTime;
}框架自增方式有那些?
cn.xbatis.core.incrementer.Generators
| 类型 | 说明 |
|---|---|
| IdAutoType.AUTO | 数据库自增 |
| IdAutoType.NONE | 无,需要自己设置ID值 |
| IdAutoType.SQL | 配置sql属性,例如 sql = "select nextval('id_test_id_seq')" |
| IdAutoType.GENERATOR | ID生成器 |
框架自带那些自增器?
| generator | 说明 |
|---|---|
| Generators.DEFAULT | 推荐,和nextId一样,区别就是可以替换 |
| Generators.nextId | 框架自带的一种基于雪花算法自增器 |
| Generators.UUID | UDID生成器 |
| Generators.UUID_V7 | UUID_V7生成器 |
如何自定义自增器
1. 实现 Generator
java
/**
* 基于IdWorker 自增器
*/
public class IdWorkerGenerator implements Generator<Long> {
@Override
public Long nextId(Class<?> entity) {
return IdWorker.INSTANCE.nextId();
}
}2. 注册生成器
在项目启动时 执行即可:
GeneratorFactory.register("xx",new IdWorkerGenerator());3. 如何用?
java
@Data
@Table
public class IdTest {
@TableId(value = IdAutoType.GENERATOR , generator= "xx")
private Long id;
private LocalDateTime createTime;
}