##MybatisPlus生成主鍵策略方法 ###全局id生成策略【因為是全局id所以不推薦】 SpringBoot集成Mybatis-Plus 在yaml配置文件中添加MP配置 mybatis-plus: global-config: db-config: #主鍵類型(auto:"自增id",as ...
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>
當然這些只是我的建議,大家可以去找找其他的方法。
有知道其他方法的小伙伴們歡迎在底下留言,本人小白一枚輕噴!