MP 支持多種主鍵策略 默認是推特的“” 雪花算法“” ,也可以設置其他策略下面我演示主鍵策略使用
MP的主鍵定義在一個一個枚舉類中 源碼如下
public enum IdType { AUTO(0),//數據庫自增 依賴數據庫 NONE(1),// 表示該類型未甚至主鍵類型 (如果沒有主鍵策略)默認根據雪花算法生成 INPUT(2),//用戶輸入ID(該類型可以通過自己注冊填充插件進行填充) //下面這三種類型,只有當插入對象id為空時 才會自動填充。 ID_WORKER(3),//全局唯一(idWorker)數值類型 UUID(4),//全局唯一(UUID) ID_WORKER_STR(5);//全局唯一(idWorker的字符串表示) private final int key; private IdType(int key) { this.key = key; } public int getKey() { return this.key; } }
.局部主鍵策略:
1,局部主鍵策略實現 在實體類中 ID屬性加注解 @TableId(type = IdType.AUTO) 主鍵自增 數據庫中需要設置主鍵自增 private Long id; @TableId(type = IdType.NONE) 默認 跟隨全局策略走 private Long id; @TableId(type = IdType.UUID) UUID類型主鍵 private Long id; @TableId(type = IdType.ID_WORKER) 數值類型 數據庫中也必須是數值類型 否則會報錯 private Long id; @TableId(type = IdType.ID_WORKER_STR) 字符串類型 數據庫也要保證一樣字符類型 private Long id; @TableId(type = IdType.INPUT) 用戶自定義了 數據類型和數據庫保持一致就行 private Long id;
2,全局主鍵策略實現
需要在application.yml文件中
添加
mybatis-plus:
mapper-locations:
- com/mp/mapper/*
global-config:
db-config:
id-type: uuid/none/input/id_worker/id_worker_str/auto 表示全局主鍵都采用該策略(如果全局策略和局部策略都有設置,局部策略優先級高)
