zoukankan      html  css  js  c++  java
  • mybatisplus之主键生成策略

    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 字符串表示法 }
    
    记得快乐
  • 相关阅读:
    MATLAB01
    Diffie-Hellman 密钥交换
    古典密码
    正则表达式
    装饰器初析
    进制转换的栈实现
    Log4j(异常日志)
    2018/6/6
    2018.1.1T19B3-u4
    2018.1.1T19-B3-U3jiangyi
  • 原文地址:https://www.cnblogs.com/Y-wee/p/13895954.html
Copyright © 2011-2022 走看看