mybatis-plus3.X主键生成策略

mybatis-plus3.X主键生成策略

目录




内容

1、生成策略及解析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wj68cGAV-1610372438832)(./images/2021-01-11_generatedKey.png)]

1.1、IdType.AUTO

  • 策略:数据库主键自增
  • 适用:数据库ID自增,数据库需要支持主键自增(如MySQL),并设置主键自增

1.2、IdType.ASSIGN_ID

  • 策略:ID_WORKER 全局唯一id ,采用推特’雪花算法’生成全局唯一64位主键,更加主键类型可以为数值型或者字符串型
  • 适用:当前大部分分布式应用,需要生成全局唯一id

1.3、IdType.INPUT

  • 策略:用户自己输入
  • 适用:特殊业务场景,需要特定主键
  • 集中常用的自定义主键规则,下面2讲解

1.4、IdType.ASSIGN_UUID

  • 策略:32位UUID
  • 适用:严格全局唯一ID
  • 缺点:占用数据库存储空间大,排序不方便

1.5、IdType.NONE

  • 策略:无策略

默认IdType.ASSIGN_ID 生成数值型全局唯一id

2、常用自定义主键规则

2.1、 Redis生成ID

当使用数据库来生成ID性能不够要求的时候,我们可以尝试使用Redis来生成ID。这主要依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。可以用Redis的原子操作 INCR和INCRBY来实现。

可以使用Redis集群来获取更高的吞吐量。假如一个集群中有5台Redis。可以初始化每台Redis的值分别是1,2,3,4,5,然后步长都是5。各个Redis生成的ID为:

A:1,6,11,16,21,…

B:2,7,12,17,22,…

C:3,8,13,18,23,…

D:4,9,14,19,24,…

E:5,10,15,20,25,…

2.2、oracle 通过序列实现数值型自增

这里不再详述,给出几个不错的博文链接

  1. https://blog.csdn.net/gaogzhen/article/details/107270600
  2. https://blog.csdn.net/libertine1993/article/details/80738763

3、springboot配置

  • 这里给出我的配置:

      mybatis-plus:
        mapper-locations: classpath*:/mapper/**/*.xml
        #实体扫描,多个package用逗号或者分号分隔
        typeAliasesPackage: com.ihrm.*.entity
        global-config:
      	#数据库相关配置
      	db-config:
      	  id-type: ASSIGN_ID
      	  #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
      	  field-strategy: NOT_NULL
      	  #驼峰下划线转换
      	  column-underline: true
      	  logic-delete-value: -1
      	  logic-not-delete-value: 0
      	banner: false
        #原生配置
        configuration:
      	map-underscore-to-camel-case: true
      	cache-enabled: false
      	call-setters-on-nulls: true
      	jdbc-type-for-null: 'null'
    
  • 配置形式:当前配置形式为全局配置,其他配置形式:注解、默认

  • 优先级:注解>全局>默认

后记

  欢迎交流,本人QQ:806797785

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaog2zh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值