Mybatis Plus實體類屬性與表欄位不一致解決方法

zhaozhangxiao發表於2022-04-26

當在使用plus開發過程中,有時候關聯屬性欄位與表結構不一致,導致使用plus時報錯。
主要註釋到實體類上的註解:

@TableName(value = …)

當資料庫名與實體類名不一致或不符合駝峰命名時,需要在此註解指定表名

@TableId(type = …)

指定實體類的屬性為對應的主鍵,主要有以下幾種:

// 資料庫ID自增
IdType.AUTO

// 該型別為未設定主鍵型別(預設)
IdType.NONE 

/**
 * 使用者輸入ID
 * <p>該型別可以透過自己註冊自動填充外掛進行填充</p>
 */
IdType.INPUT

/* 以下3種型別、只有當插入物件ID 為空,才自動填充。 */
//1.全域性唯一ID (idWorker)
IdType.ID_WORKER

//2.全域性唯一ID (UUID)
IdType.UUID

//3.字串全域性唯一ID (idWorker 的字串表示)
IdType.ID_WORKER_STR

@TableField註解
1、 主要用來解決實體類的欄位名與資料庫中的欄位名不匹配的問題(資料庫user_addr,欄位useraddr未駝峰)
2、 實體類中的屬性欄位在表中不存在的問題
常用:

// 用來解決資料庫中的欄位和實體類的欄位不匹配問題
@TableField(value = "age")

// 用來解決實體類中有的屬性但是資料表中沒有的欄位
@TableField(exist = false)  // 預設為true

如不指定,出現以下的異常:BadSqlGrammarException

// 查詢時不返回該欄位,預設true,和@TableId作用在同一個欄位上時失效
@TableField(select = false)

Mybatis Plus實體類屬性與表欄位不一致解決方法

Mybatis Plus實體類屬性與表欄位不一致解決方法

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章