java中常用注解@TableId的詳細解析
@TableId 是 MyBatis-Plus 提供的一個注解,用于標識實體類中的主鍵字段。它可以幫助 MyBatis-Plus
在執(zhí)行數(shù)據(jù)庫操作時正確地識別和處理主鍵字段。
下面是對 @TableId 注解的詳細解析:
@TableId 注解詳解
1. 基本用途
標識主鍵:@TableId 注解用于標記實體類中的某個字段為主鍵字段。 自動生成策略:可以指定主鍵的生成策略,如自增、UUID 等。
2. 屬性
value:主鍵字段的名稱,默認值為字段名。 type:主鍵生成策略,常用的有以下幾種:
IdType.AUTO:自動增長(適用于自增主鍵)。 IdType.NONE:不指定主鍵生成策略,需要手動賦值。
IdType.ASSIGN_ID:使用雪花算法生成唯一 ID(Long 類型)。 IdType.ASSIGN_UUID:使用 UUID
生成唯一 ID(String 類型)。 IdType.INPUT:手動輸入主鍵值。
3. 示例
示例 1:基本用法
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("sys_job_log")
public class SysJobLog {
@TableId
private String jobLogId;
private String jobName;
private String jobGroup;
private String invokeTarget;
private String jobMessage;
private String status;
private String exceptionInfo;
private Date createTime;
// 其他字段和方法
}在這個示例中,jobLogId 字段被標記為主鍵,但沒有指定生成策略,因此默認為 IdType.AUTO。
示例 2:指定生成策略
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("sys_job_log")
public class SysJobLog {
@TableId(value = "job_log_id", type = IdType.ASSIGN_UUID)
private String jobLogId;
private String jobName;
private String jobGroup;
private String invokeTarget;
private String jobMessage;
private String status;
private String exceptionInfo;
private Date createTime;
// 其他字段和方法
}
在這個示例中,jobLogId 字段被標記為主鍵,并且指定了生成策略為 IdType.ASSIGN_UUID,即使用 UUID 生成唯一
ID。
使用場景
1.自增主鍵:
@TableId(type = IdType.AUTO) private Long id;
2.UUID 主鍵:
@TableId(type = IdType.ASSIGN_UUID) private String id;
3.手動賦值主鍵:
@TableId(type = IdType.INPUT) private String customId;
注意事項
字段類型:
IdType.ASSIGN_ID 適用于 Long 類型的主鍵。 IdType.ASSIGN_UUID 適用于 String 類型的主鍵。
數(shù)據(jù)庫兼容性:
不同的數(shù)據(jù)庫對主鍵生成策略的支持可能有所不同,例如 MySQL 支持自增主鍵,而 Oracle 需要使用序列。
唯一性:
確保生成的主鍵值在數(shù)據(jù)庫中是唯一的,以避免主鍵沖突。 通過使用 @TableId
注解,你可以靈活地管理和配置實體類中的主鍵字段,從而更好地與數(shù)據(jù)庫進行交互。
總結
到此這篇關于java中常用注解@TableId詳細解析的文章就介紹到這了,更多相關java注解@TableId內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java實戰(zhàn)之飛機大戰(zhàn)小游戲(源碼加注釋)
這篇文章主要介紹了java實戰(zhàn)之飛機大戰(zhàn)小游戲(源碼加注釋),文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
解讀Java中打印輸出對象內容為什么可以不寫.toString()
這篇文章主要介紹了解讀Java中打印輸出對象內容為什么可以不寫.toString()問題,具有很的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
解決MyBatis報錯:There is no getter for
這篇文章主要介紹了解決MyBatis報錯:There is no getter for property named'Xxx'in'class xxx.xxx.Xxx'問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
深入理解Java class文件格式_動力節(jié)點Java學院整理
對于理解JVM和深入理解Java語言, 學習并了解class文件的格式都是必須要掌握的功課2017-06-06
Java結合Spark的數(shù)據(jù)清洗場景及對應的實現(xiàn)方法
在大數(shù)據(jù)處理中,數(shù)據(jù)清洗是非常重要的一步,數(shù)據(jù)清洗可以幫助我們去除臟數(shù)據(jù)、處理缺失值、規(guī)范數(shù)據(jù)格式等,以確保數(shù)據(jù)質量和準確性,在本文中,我們將介紹如何使用Java結合Spark框架來實現(xiàn)數(shù)據(jù)清洗,需要的朋友可以參考下2025-05-05
java并發(fā)編程中的SynchronousQueue實現(xiàn)原理解析
這篇文章主要介紹了java并發(fā)編程中的SynchronousQueue實現(xiàn)原理解析,SynchronousQueue是一個比較特別的隊列,此隊列源碼中充斥著大量的CAS語句,理解起來是有些難度的,為了方便日后回顧,本篇文章會以簡潔的圖形化方式展示該隊列底層的實現(xiàn)原理,需要的朋友可以參考下2023-12-12

