MybatisPlus生成主鍵策略方法
全域id生成策略【因為是全域id所以不推薦】
SpringBoot集成Mybatis-Plus
在yaml組態檔中添加MP配置
mybatis-plus:
global-config:
db-config:
#主鍵型別(auto:"自增id",assign_id:"全域唯一id(雪花演算法,Long或者String型別)",
assign_uuid:"全域唯一id(無中劃線的uuid)",input:"自行設定id,默認null",none:"不設定主鍵id")
id-type: assign_id
區域id生成策略【區域id非常推薦】
在物體類當中使用@TableId注解配置id生成型別
@TableId(type = IdType.AUTO)
private String id;
注意事項:
-
同時配置了這兩種策略時,區域欄位的ID生成策略優先級高于全域的id生成策略
-
使用雪花演算法生成ID后,再次切換為主鍵自增的ID生成策略后會導致起始序列過大(沒有重置起始序列值)
-
另外如果原先指定了@TableId(type = IdType.AUTO),然后去除這部分代碼,會發生Tuncate操作(即清空表并重置ID起始值)
如果大家沒有用到MybaitsPlus,也可以用java自帶的生成方法
因為一般資料庫主鍵為String型別,所以接收型別為String,生成的uuid資料包含-,所以要去掉-,
java.util.UUID.randomUUID().toString().replace("-", "").toLowerCase();
也可以用hutool中的生成方法,下面是以int型別為例子
int context = Math.abs(IdUtil.fastSimpleUUID().hashCode());
也可以用當前時間戳+隨機id的形式生成唯一的,下面是以String型別為例子,
(當并發創建時有可能會重復所以建議使用雪花演算法)
Date date = new Date();
String context = DateUtil.format(date,"yyyyMMdd") +Math.abs(IdUtil.fastSimpleUUID().hashCode());
使用hutool需要匯入依賴
<!-- Hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.19</version>
</dependency>
當然這些只是我的建議,大家可以去找找其他的方法,
有知道其他方法的小伙伴們歡迎在底下留言,本人小白一枚輕噴!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/514991.html
標籤:Java
上一篇:【C++】spdlog光速入門,C++logger最簡單最快的庫
下一篇:mybatis學習筆記
