1. 程式人生 > 其它 >mybatis-plus3.X主鍵生成策略

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