mybatis-plus3.X主鍵生成策略
阿新 • • 發佈:2021-01-12
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