这个注释主要用于对应数据库表的实体类中的主键属性。
写法:@TableId(value=“数据库主键字段”,type = IdType.六种类型之一)
例如:@TableId(value=“user_id”,type = IdType.AUTO )
IdType的六种类型
类型 | 解释 |
---|---|
AUTO | 数据库自增ID |
NONE | 数据库未设置主键类型(将会跟随全局) |
INPUT | 用户输入ID(该类型可以通过自己注册自动填充插件进行填充) |
ID_WORKER | 默认的全局唯一ID (idWorker) |
UUID | 全局唯一ID(UUID) |
ID_WORKER_STR | 字符串全局唯一ID(ID_WORKER 的字符串表示) |
- 当注释为
ID_WORKER
,UUID
和ID_WORKER_STR
且 插入主键为空时,会把对应的主键数据自动填充到对象中去。 - 如果没有注释的时候,变量名为id的字段也会是ID_WORKER形式
- ID_WORKER是利用了雪花算法
- 雪花算法也就是SnowFlake 算法,它是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。