mybatisplus之主键生成策略

Posted Y-wee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 字符串表示法 }

以上是关于mybatisplus之主键生成策略的主要内容,如果未能解决你的问题,请参考以下文章

hibernate之主键生成策略

Hibernate 之主键生成策略小总结

Hibernate之主键生成策略

hibernate之主键生成策略

hibernate之主键生成策略

flea-db使用之主键生成器表介绍