• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

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 字符串表示法 }
记得快乐
posted @ 2020-10-29 11:49  Y-wee  阅读(3253)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3