• 二、MyBatis-Plus 主键策略


    1、插入操作

    //添加
    @Test
    public void testAdd() {
        User user = new User();
        user.setName("lucy");
        user.setAge(20);
        user.setEmail("1243@qq.com");
        int insert = userMapper.insert(user);
        System.out.println(insert);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    注意:数据库插入id值默认为:全局唯一id
    在这里插入图片描述

    2、MP的主键策略

    2.1 ASSIGN_ID

    MyBatis-Plus默认的主键策略是:ASSIGN_ID (使用了雪花算法)

    @TableId(type = IdType.ASSIGN_ID)
    private String id;
    
    • 1
    • 2

    雪花算法:分布式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碰撞,并且效率较高。

    2.2 AUTO 自增策略

    需要在创建数据表的时候设置主键自增

    实体字段中配置 @TableId(type = IdType.AUTO)

    @TableId(type = IdType.AUTO)
    private Long id;
    
    • 1
    • 2

    要想影响所有实体的配置,可以设置全局主键配置

    #全局设置主键生成策略
    mybatis-plus.global-config.db-config.id-type=auto
    
    • 1
    • 2
  • 相关阅读:
    网络编程(五)——poll和epoll
    驱动 DAY4
    vscode配置openssl include和lib环境(M1 mac)
    LayaBox---TypeScript---JavaScript文件类型检查
    数据结构与算法(java)--哈希表
    M拷贝表行数据
    2678. 老人的数目
    Springer Nature LaTex Template常见问题
    Java语言基础
    Orin PPS failed to request pps gpio修改
  • 原文地址:https://blog.csdn.net/qq_43102730/article/details/126338778