【SpringBoot】91、SpringBoot解决Mybatis-Plus生成雪花ID重复问题
作者:mmseoamin日期:2024-02-05

在 Mybatis-Plus 中,我们可以自定义 ID 生成器,从而生成我们想要的 ID 样式。

提示
自 3.3.0 开始,默认使用雪花算法+UUID(不含中划线)

方法 主键生成策略 主键类型 说明
nextId ASSIGN_ID,ID_WORKERID_WORKER_STR Long,Integer,String 支持自动转换为 String 类型,但数值类型不支持自动转换,需精准匹配,例如返回 Long,实体主键就不支持定义为 Integer
nextUUID ASSIGN_UUID,UUID String 默认不含中划线的 UUID 生成

1、雪花ID简介(Snowflake)

雪花 ID 是 Twitter 开源的分布式 ID 生成算法,结果是 64bit 的 Long 类型的 ID,有着全局唯一和有序递增的特点。其中:

  • 最高位是符号位,因为生成的 ID 总是正数,所以这一位始终为 0,不可用。
  • 41 位的时间序列,精确到毫秒级,41 位的长度可以使用 69 年。时间位还有一个很重要的作用是可以根据时间进行排序。
  • 10 位的机器标识,10 位的长度最多支持部署 1024 个节点。
  • 12 位的计数序列号&