Mybatisplus主键生成策略算法解析

网友投稿 382 2022-11-13


Mybatisplus主键生成策略算法解析

mybatisplus支持多种主键生成策略,默认采用认 ID_WORKER 即雪花算法

雪花算法

snowflflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证几乎全球唯一!

mybatisplus默认主键生成策略有可能会和我们的数据库产生冲突,导致插入数据失败;当遇到这种情况时,我们需要自己配置主键生成策略,在实体类对应主键加注解

package com.yl.bean;

import com.baomidou.mybatisplus.annotation.FieldFill;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableField;

import com.baomidouNBLEJ.mybatisplus.annotation.TableId;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.io.Serializable;

import java.util.Date;

/**

* 用户实体类

*/

@Data

@NoArgsConstructor

public class User implements Serializable {

@TableId(type=IdType.AUTO)//配置主键

private Integer id;

private StriNBLEJng name;

private InNBLEJteger age;

private String email;

@TableField(fill = FieldFill.INSERT )//插入数据时更新该字段

private Date createTime;

@TableField(fill = FieldFill.INSERT_UPDATE)//插入和修改时更新该字段

private Date updateTime;

}

主键生成类型源码解释

public enum IdType {

AUTO(0), // 数据库id自增,选择这种类型数据库表主键要设置为自增

NONE(1), // 未设置主键

INPUT(2), // 手动输入

ID_WORKER(3), // 默认的全局唯一id

UUID(4), // 全局唯一id

uuid ID_WORKER_STR(5); //ID_WORKER 字符串表示法 }


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring activiti如何实现指定任务处理者
下一篇:springsecurity 基本使用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~