栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

小书MybatisPlus第6篇-主键生成策略精讲

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

小书MybatisPlus第6篇-主键生成策略精讲

本文为mybatis系列文档的第6篇,前5篇请访问下面的网址。

  • 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查
  • 小书MybatisPlus第2篇-条件构造器的应用及总结
  • 小书MybatisPlus第3篇-自定义SQL
  • 小书MybatisPlus第4篇-表格分页与下拉分页查询
  • 小书MybatisPlus第5篇-Active Record模式精讲

Mybatis Plus 为我们提供了三种设置 主键生成策略的方式。它们的优先级顺序是:局部注解 > 全局 > 默认(雪花算法)。下面我们来一一介绍

一、默认主键生成策略:雪花算法

Mybatis Plus如果不做任何主键策略配置,默认使用的是雪花算法。该策略会根据雪花算法生成主键ID,主键类型为Long或String(具体到MySQL数据库就是BIGINT和VARCHAR),该策略使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)

snowflake算法是Twitter开源的分布式ID生成算法,结果是一个long类型的ID 。其核心思想:使用41bit作为毫秒数,10bit作为机器的ID(5bit数据中心,5bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每个毫秒可以产生4096个ID),最后还有一个符号位,永远是0。

二、自定义主键策略

mybatis-plus3.3.0以后,主要有五种主键生成策略。

public enum IdType {
    
    AUTO(0),

    
    NONE(1),

    
    INPUT(2),

    
    
    ID_WORKER(3),
    
    UUID(4),
    
    ID_WORKER_STR(5);
}
三、局部注解配置策略

我们针对主键设置主键策略使用注解方式为

@TableId(type = IdType.AUTO)
private long userId;

四、全局配置策略
mybatis-plus:
  global-config:
    db-config:
      id-type: auto
五、扩展使用 5.1.INPUT用户输入ID策略的用法

其中需要和大家特殊介绍的是:Input(用户输入ID),这个ID来源可以有两种

  • 用户自己设置ID,并在insert之前SET主键的值
  • 一些有序列的数据库,比如Oracle,SQLServer等,针对这些数据库我们可以通过序列填充ID字段

Mybatis-Plus 内置了如下数据库主键序列(如果内置支持不满足你的需求,可实现 IKeyGenerator 接口来进行扩展):

  • DB2KeyGenerator
  • H2KeyGenerator
  • KingbaseKeyGenerator
  • OracleKeyGenerator
  • PostgreKeyGenerator

以Oracle 的Sequence使用方法为例,使用方法如下:
首先添加@Bean

 @Bean
    public OracleKeyGenerator oracleKeyGenerator(){
 return new OracleKeyGenerator();
    }

然后实体类配置主键 Sequence,指定主键策略为 IdType.INPUT 即可,

@Data
@KeySequence(value = "SEQ_USER" , clazz = Long.class)
public class User {

    @TableId(value = "ID",type = IdType.INPUT)
    private Integer id;

欢迎关注我的博客,里面有很多精品合集
  • 本文转载注明出处(必须带连接,不能只转文字):字母哥博客。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/234235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号