码迷,mamicode.com
首页 > 其他好文 > 详细

mybatisplus之主键生成策略

时间:2020-10-30 11:45:19      阅读:13      评论:0      收藏:0      [点我收藏+]

标签:ring   分布式ID   全球   解释   思想   name   port   id自增   fill   

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.baomidou.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 String name;
    private Integer 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 字符串表示法 }

mybatisplus之主键生成策略

标签:ring   分布式ID   全球   解释   思想   name   port   id自增   fill   

原文地址:https://www.cnblogs.com/Y-wee/p/13895954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!