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 字符串表示法 }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理方案
这篇文章主要介绍了MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理方案,分别介绍了两种占位符的区别,本文给大家介绍的非常详细,需要的朋友可以参考下2024-01-01
java 基础知识之网络通信(TCP通信、UDP通信、多播以及NIO)总结
这篇文章主要介绍了java 基础知识之网络通信总结的相关资料,包括TCP通信、UDP通信、多播以及NIO,需要的朋友可以参考下2017-03-03
Idea中如何查看SpringSecurity各Filter信息
这篇文章主要介绍了Idea中如何查看SpringSecurity各Filter信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01
SpringBoot之@Controller和@RequestMapping的实现原理解读
这篇文章主要介绍了SpringBoot之@Controller和@RequestMapping的实现原理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2025-04-04
IntelliJ IDEA下Maven创建Scala项目的方法步骤
这篇文章主要介绍了IntelliJ IDEA下Maven创建Scala项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-06-06


最新评论