在 Mybatis-Plus 中,我们可以自定义 ID 生成器,从而生成我们想要的 ID 样式。
提示
自 3.3.0 开始,默认使用雪花算法+UUID(不含中划线)
方法 | 主键生成策略 | 主键类型 | 说明 |
---|---|---|---|
nextId | ASSIGN_ID, |
Long,Integer,String | 支持自动转换为 String 类型,但数值类型不支持自动转换,需精准匹配,例如返回 Long,实体主键就不支持定义为 Integer |
nextUUID | ASSIGN_UUID, |
String | 默认不含中划线的 UUID 生成 |
1、雪花ID简介(Snowflake)
雪花 ID 是 Twitter 开源的分布式 ID 生成算法,结果是 64bit 的 Long 类型的 ID,有着全局唯一和有序递增的特点。其中:
- 最高位是符号位,因为生成的 ID 总是正数,所以这一位始终为 0,不可用。
- 41 位的时间序列,精确到毫秒级,41 位的长度可以使用 69 年。时间位还有一个很重要的作用是可以根据时间进行排序。
- 10 位的机器标识,10 位的长度最多支持部署 1024 个节点。
- 12 位的计数序列号&