Mybatisplus主键生成策略算法解析
mybatisplus支持多种主键生成策略,默认采用认ID_WORKER即雪花算法
雪花算法
snowflflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0。可以保证几乎全球唯一!
mybatisplus默认主键生成策略有可能会和我们的数据库产生冲突,导致插入数据失败;当遇到这种情况时,我们需要自己配置主键生成策略,在实体类对应主键加注解
packagecom.yl.bean; importcom.baomidou.mybatisplus.annotation.FieldFill; importcom.baomidou.mybatisplus.annotation.IdType; importcom.baomidou.mybatisplus.annotation.TableField; importcom.baomidou.mybatisplus.annotation.TableId; importlombok.Data; importlombok.NoArgsConstructor; importjava.io.Serializable; importjava.util.Date; /** *用户实体类 */ @Data @NoArgsConstructor publicclassUserimplementsSerializable{ @TableId(type=IdType.AUTO)//配置主键 privateIntegerid; privateStringname; privateIntegerage; privateStringemail; @TableField(fill=FieldFill.INSERT)//插入数据时更新该字段 privateDatecreateTime; @TableField(fill=FieldFill.INSERT_UPDATE)//插入和修改时更新该字段 privateDateupdateTime; }
主键生成类型源码解释
publicenumIdType{
AUTO(0),//数据库id自增,选择这种类型数据库表主键要设置为自增
NONE(1),//未设置主键
INPUT(2),//手动输入
ID_WORKER(3),//默认的全局唯一id
UUID(4),//全局唯一id
uuidID_WORKER_STR(5);//ID_WORKER字符串表示法}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。