1.当你使用mybatis-plus时,如果不设置主键自增策略,默认使用雪花算法
两种方法默认设置mybatis主键自增策略:
【mybatis-plus|mybatis-plus 主键自增问题】1.单个实体类设置,作用域只有这个类
需要在创建数据表的时候设置主键自增
实体字段中配置 @TableId(type = IdType.AUTO)
@TableId(type = IdType.AUTO)
private Long id;
2.全局设置,去除了挨个设置主键自增策略:
要想影响所有实体的配置,可以设置全局主键配置
#全局设置主键生成策略
mybatis-plus.global-config.db-config.id-type=auto
package com.ape.springbootmybatisplus.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* @createAuthor Administrator
* @currentAroject springboot-mybatis-plus
* @createDate 2022-03-20 12:49
*/
@Data
public class User {
//主键策略
@TableId(type = IdType.ASSIGN_ID)//19位值如果此处什么也不写默认就是这样,使用雪花算法策略
private Long id;
private String name;
private Integer age;
private String email;
}
简述雪花算法策略:
文章图片
雪花算法:分布式ID生成器
雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。
核心思想:
长度共64bit(一个long型)。
首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。
41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。
10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID,可以部署在1024个节点)。
12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID)。优点:整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞,并且效率较高。
推荐阅读
- springboot|mybatis-plus代码生成器的使用
- mysql|mybatis-plus内置雪花算法主键重复问题
- MyBatis-Plus笔记|MybatisPlus学习笔记------CRUD操作---insert操作
- SpringBoot|SpringBoot整合Mybatis-Plus+Druid
- 数据库|mybatis-plus QueryWrapper 添加limit
- mybatis-plus条件构造器QueryWrapper
- javaweb|mybatis-plus批量逻辑删除,并填充字段
- SpringBoot+Mybatis-Plus整合Sharding-JDBC5.1.1实现单库分表全网最新
- 实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错