这个注释主要用于对应数据库表的实体类中的主键属性。
写法:@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 作为序列号。
本文详细介绍了在实体类中使用@TableId注释定义主键的六种方式,包括数据库自增、用户输入、全局唯一ID等,并深入探讨了雪花算法(SnowFlake)原理及其在ID_WORKER类型中的应用。
365

被折叠的 条评论
为什么被折叠?



