Mybatisplus主键生成策略算法解析

作者:Y_wee 时间:2022-06-22 20:49:23 

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 字符串表示法 }

来源:https://www.cnblogs.com/Y-wee/p/13895954.html

标签:Mybatisplus,主键,生成
0
投稿

猜你喜欢

  • Hibernate持久化对象生命周期原理解析

    2022-08-14 19:44:27
  • C#创建windows系统用户的方法

    2022-07-16 20:30:12
  • C#实现对数组进行随机排序类实例

    2023-06-22 19:04:26
  • JAVA使用hutool工具实现查询树结构数据(省市区)

    2021-11-04 18:30:09
  • Android封装MVP实现登录注册功能

    2021-06-14 20:45:08
  • Android自带倒计时控件Chronometer使用方法详解

    2022-09-18 13:11:33
  • 重温C# clr 笔记总结

    2023-06-22 02:24:30
  • java 2d画图示例分享(用java画图)

    2023-07-25 22:03:52
  • 深入理解TextView实现Rich Text--在同一个TextView设置不同字体风格

    2023-05-25 04:52:01
  • Druid(新版starter)在SpringBoot下的使用教程

    2021-07-03 20:25:18
  • C# 抓图服务的实现

    2023-04-03 20:10:12
  • SpringBoot文件分片上传的示例代码

    2023-06-18 11:30:15
  • springmvc的文件保存方法详解

    2023-06-12 00:33:43
  • java客户端Jedis操作Redis Sentinel 连接池的实现方法

    2023-08-19 10:55:19
  • Android自带emoji表情的使用方法详解

    2021-11-25 09:28:22
  • 如何使用try-with-resource机制关闭连接

    2022-04-25 01:36:54
  • Mybatis实现关联关系映射的方法示例

    2022-09-18 05:36:12
  • Android MessageQueue消息队列主要作用详解

    2021-11-11 15:25:39
  • AndroidStudio简单实现BMI计算

    2022-11-24 03:14:50
  • Swing图形界面实现可动态刷新的验证码

    2022-03-27 08:08:50
  • asp之家 软件编程 m.aspxhome.com