MyBatis-Plus @TableId注解之主鍵配置與常見問題分析
在MyBatis-Plus中,@TableId注解用于標(biāo)識實體類的主鍵字段,并可以配置多種屬性。以下是@TableId可選的屬性及其說明:
1.value
作用:指定數(shù)據(jù)庫表中的主鍵列名(如果字段名與列名不一致時使用)。
示例:
@TableId(value = "user_id") private Long id;
- 表示實體類的
id字段對應(yīng)數(shù)據(jù)庫表的user_id列。
2.type
作用:指定主鍵生成策略(IdType枚舉類型)。
可選值:
| 值 | 說明 |
|---|---|
| IdType.AUTO | 數(shù)據(jù)庫自增(MySQL的AUTO_INCREMENT) |
| IdType.NONE | 無策略,需手動設(shè)置主鍵值 |
| IdType.INPUT | 用戶手動輸入主鍵值 |
| IdType.ASSIGN_ID | 默認策略,使用雪花算法生成Long類型ID |
| IdType.ASSIGN_UUID | 生成UUID字符串類型ID |
| IdType.ID_WORKER | 已廢棄,改用ASSIGN_ID |
| IdType.UUID | 已廢棄,改用ASSIGN_UUID |
示例:
@TableId(type = IdType.AUTO) private Long id; // 依賴數(shù)據(jù)庫自增
3.keepGlobalFormat(3.5.0+)
作用:是否保持全局主鍵格式(如全局配置了前綴/后綴,是否應(yīng)用到當(dāng)前字段)。
默認值:false
示例:
@TableId(keepGlobalFormat = true) private String customId;
全局配置(替代@TableId)
如果不想在每個實體類上寫@TableId,可以在application.yml中配置全局策略:
mybatis-plus: global-config: db-config: id-type: assign_id # 全局主鍵策略(默認為ASSIGN_ID) table-prefix: t_ # 表前綴(可選)
常見問題
數(shù)據(jù)庫自增但未生效:
- 確保數(shù)據(jù)庫表的主鍵列設(shè)置了
AUTO_INCREMENT。 - 確保
@TableId(type = IdType.AUTO)。
雪花算法ID沖突:
ASSIGN_ID生成的ID可能因系統(tǒng)時間回撥導(dǎo)致重復(fù),需配置workerId和datacenterId。
UUID主鍵:
- 使用
@TableId(type = IdType.ASSIGN_UUID)時,字段類型應(yīng)為String。
完整示例
@Data
@TableName("sys_user")
public class User {
@TableId(value = "user_id", type = IdType.ASSIGN_ID)
private Long id;// 雪花算法ID
@TableId(value = "uuid", type = IdType.ASSIGN_UUID)
private String uuid;// UUID字符串
}
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot時區(qū)問題解決以及徹底解決時差問題
這篇文章主要給大家介紹了關(guān)于SpringBoot時區(qū)問題解決以及徹底解決時差問題的相關(guān)資料,spring?boot作為微服務(wù)簡易架構(gòu),擁有其自身的特點,快速搭建架構(gòu),簡單快捷,需要的朋友可以參考下2023-08-08
SpringBoot項目導(dǎo)出jar包及瘦身部署方式
今天項目要求Nginx+jar包運行多個項目,在此記錄一下部署的過程,其中借鑒了好多網(wǎng)上前輩的經(jīng)驗,感謝各位的無私分享2024-07-07
解決MyEclipse中的Building workspace問題的三個方法
這篇文章主要介紹了解決MyEclipse中的Building workspace問題的三個方法,需要的朋友可以參考下2015-11-11
Failed to execute goal org...的解決辦法
這篇文章主要介紹了Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06
Java 實戰(zhàn)項目之小說在線閱讀系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)前臺閱讀后臺管理的小說在線閱讀系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11

