mybatis-plus3.X主键生成策略
目录
文章目录
内容
1、生成策略及解析
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 通过序列实现数值型自增
这里不再详述,给出几个不错的博文链接
- https://blog.csdn.net/gaogzhen/article/details/107270600
- 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