MyBatis-Plus @TableId注解之主鍵配置與常見(jiàn)問(wèn)題分析
在MyBatis-Plus中,@TableId注解用于標(biāo)識(shí)實(shí)體類(lèi)的主鍵字段,并可以配置多種屬性。以下是@TableId可選的屬性及其說(shuō)明:
1.value
作用:指定數(shù)據(jù)庫(kù)表中的主鍵列名(如果字段名與列名不一致時(shí)使用)。
示例:
@TableId(value = "user_id") private Long id;
- 表示實(shí)體類(lèi)的
id字段對(duì)應(yīng)數(shù)據(jù)庫(kù)表的user_id列。
2.type
作用:指定主鍵生成策略(IdType枚舉類(lèi)型)。
可選值:
| 值 | 說(shuō)明 |
|---|---|
| IdType.AUTO | 數(shù)據(jù)庫(kù)自增(MySQL的AUTO_INCREMENT) |
| IdType.NONE | 無(wú)策略,需手動(dòng)設(shè)置主鍵值 |
| IdType.INPUT | 用戶(hù)手動(dòng)輸入主鍵值 |
| IdType.ASSIGN_ID | 默認(rèn)策略,使用雪花算法生成Long類(lèi)型ID |
| IdType.ASSIGN_UUID | 生成UUID字符串類(lèi)型ID |
| IdType.ID_WORKER | 已廢棄,改用ASSIGN_ID |
| IdType.UUID | 已廢棄,改用ASSIGN_UUID |
示例:
@TableId(type = IdType.AUTO) private Long id; // 依賴(lài)數(shù)據(jù)庫(kù)自增
3.keepGlobalFormat(3.5.0+)
作用:是否保持全局主鍵格式(如全局配置了前綴/后綴,是否應(yīng)用到當(dāng)前字段)。
默認(rèn)值:false
示例:
@TableId(keepGlobalFormat = true) private String customId;
全局配置(替代@TableId)
如果不想在每個(gè)實(shí)體類(lèi)上寫(xiě)@TableId,可以在application.yml中配置全局策略:
mybatis-plus: global-config: db-config: id-type: assign_id # 全局主鍵策略(默認(rèn)為ASSIGN_ID) table-prefix: t_ # 表前綴(可選)
常見(jiàn)問(wèn)題
數(shù)據(jù)庫(kù)自增但未生效:
- 確保數(shù)據(jù)庫(kù)表的主鍵列設(shè)置了
AUTO_INCREMENT。 - 確保
@TableId(type = IdType.AUTO)。
雪花算法ID沖突:
ASSIGN_ID生成的ID可能因系統(tǒng)時(shí)間回?fù)軐?dǎo)致重復(fù),需配置workerId和datacenterId。
UUID主鍵:
- 使用
@TableId(type = IdType.ASSIGN_UUID)時(shí),字段類(lèi)型應(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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot時(shí)區(qū)問(wèn)題解決以及徹底解決時(shí)差問(wèn)題
這篇文章主要給大家介紹了關(guān)于SpringBoot時(shí)區(qū)問(wèn)題解決以及徹底解決時(shí)差問(wèn)題的相關(guān)資料,spring?boot作為微服務(wù)簡(jiǎn)易架構(gòu),擁有其自身的特點(diǎn),快速搭建架構(gòu),簡(jiǎn)單快捷,需要的朋友可以參考下2023-08-08
SpringBoot項(xiàng)目導(dǎo)出jar包及瘦身部署方式
今天項(xiàng)目要求Nginx+jar包運(yùn)行多個(gè)項(xiàng)目,在此記錄一下部署的過(guò)程,其中借鑒了好多網(wǎng)上前輩的經(jīng)驗(yàn),感謝各位的無(wú)私分享2024-07-07
一款不可錯(cuò)過(guò)的Java應(yīng)用診斷利器Arthas
Arthas是一款由阿里巴巴開(kāi)源的Java應(yīng)用診斷利器,它可以幫助開(kāi)發(fā)人員在運(yùn)行時(shí)對(duì)Java應(yīng)用進(jìn)行調(diào)試和診斷,解決線(xiàn)上問(wèn)題,本文將簡(jiǎn)單的描述一下該工具的用法和常用命令,以勾起大家對(duì)此工具應(yīng)用的興趣2023-06-06
解決MyEclipse中的Building workspace問(wèn)題的三個(gè)方法
這篇文章主要介紹了解決MyEclipse中的Building workspace問(wèn)題的三個(gè)方法,需要的朋友可以參考下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 實(shí)戰(zhàn)項(xiàng)目之小說(shuō)在線(xiàn)閱讀系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)前臺(tái)閱讀后臺(tái)管理的小說(shuō)在線(xiàn)閱讀系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11
idea切換分支的時(shí)候,忽略一些無(wú)用的修改設(shè)置
這篇文章主要介紹了idea切換分支的時(shí)候,忽略一些無(wú)用的修改操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02

