java中常用注解@TableId的詳細解析
@TableId 是 MyBatis-Plus 提供的一個注解,用于標識實體類中的主鍵字段。它可以幫助 MyBatis-Plus
在執(zhí)行數據庫操作時正確地識別和處理主鍵字段。
下面是對 @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 類型的主鍵。
數據庫兼容性:
不同的數據庫對主鍵生成策略的支持可能有所不同,例如 MySQL 支持自增主鍵,而 Oracle 需要使用序列。
唯一性:
確保生成的主鍵值在數據庫中是唯一的,以避免主鍵沖突。 通過使用 @TableId
注解,你可以靈活地管理和配置實體類中的主鍵字段,從而更好地與數據庫進行交互。
總結
到此這篇關于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-06Java結合Spark的數據清洗場景及對應的實現(xiàn)方法
在大數據處理中,數據清洗是非常重要的一步,數據清洗可以幫助我們去除臟數據、處理缺失值、規(guī)范數據格式等,以確保數據質量和準確性,在本文中,我們將介紹如何使用Java結合Spark框架來實現(xiàn)數據清洗,需要的朋友可以參考下2025-05-05java并發(fā)編程中的SynchronousQueue實現(xiàn)原理解析
這篇文章主要介紹了java并發(fā)編程中的SynchronousQueue實現(xiàn)原理解析,SynchronousQueue是一個比較特別的隊列,此隊列源碼中充斥著大量的CAS語句,理解起來是有些難度的,為了方便日后回顧,本篇文章會以簡潔的圖形化方式展示該隊列底層的實現(xiàn)原理,需要的朋友可以參考下2023-12-12