mybatis-plus常用注解@TableId和@TableField的用法
1 @TableId
當(dāng)我們用mybatis-plus對數(shù)據(jù)庫進(jìn)行操作時,比如說如下代碼:
可以發(fā)現(xiàn)我們沒有設(shè)置id,但是插入的時候id卻是能夠自己插入進(jìn)去。但是要是將實體類字段的id改為uid呢?數(shù)據(jù)庫的字段也改為id,再次執(zhí)行代碼
@Data public class User { private Long uid; private String name; private Integer age; private String email; private SexEnum sex; @TableLogic private Integer isDeleted; }
最后報錯信息如下:
org.springframework.dao.DataIntegrityViolationException: com.atguigu.mybatisplus.mapper.UserMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field 'uid' doesn't have a default value
; Field 'uid' doesn't have a default value; nested exception is java.sql.BatchUpdateException: Field 'uid' doesn't have a default value
那如何在不改變字段的情況下,解決這個問題呢?
可以在該字段上加上@TableId
2 @TableId的value屬性
上面說了當(dāng)實體類和數(shù)據(jù)庫的值都是uid時,需要在實體類上加上@TableId注解,那么當(dāng)實體類的字段為id,數(shù)據(jù)庫的字段為uid呢,這樣還可以嗎?我們一試便知。
@TableId private Long id;
報錯信息如下:
org.springframework.jdbc.BadSqlGrammarException: com.atguigu.mybatisplus.mapper.UserMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column 'id' in 'field list'
; bad SQL grammar []; nested exception is java.sql.BatchUpdateException: Unknown column 'id' in 'field list'
顯示這是不可以的,但是如果采用了@TableId的value屬性呢,如下:
//注意: 只設(shè)置一個value屬性時,value可以不寫,作用:用于設(shè)置指定主鍵 @TableId("uid") private Long id;
這樣一樣可以插入成功
3 @TableId的type屬性
常用的主鍵策略:
值 | 描述 |
IdType.ASSIGN_ID | 基于雪花算法的策略生成數(shù)據(jù)id,與數(shù)據(jù)庫id是否設(shè)置自增無關(guān) |
IdType.AUTO | 使用數(shù)據(jù)庫的自增策略,注意:該類型需確保數(shù)據(jù)庫設(shè)置了自增id,否則無效 |
因為在之前的插入中,發(fā)現(xiàn)id默認(rèn)的就是雪花算法
如果想要使用了數(shù)據(jù)庫的自增策略,需要 設(shè)置IdType.AUTO和數(shù)據(jù)庫設(shè)置自增id。
除此之外,也可以通過全局配置來設(shè)置主鍵生成策略。
注意:@TableId注解是專用于主鍵的注解、@TableField用于其他屬性所對應(yīng)字段不一致的注解。
到此這篇關(guān)于mybatis-plus常用注解@TableId和@TableField的用法的文章就介紹到這了,更多相關(guān)mybatis-plus @TableId @TableField內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- j2ee mybatis注解@Data,@TableName,@TableField使用方式
- 注解@TableName,@TableField,pgsql的模式對應(yīng)方式
- MyBatisPlus中@TableField注解的基本使用
- mybatis?plus框架@TableField注解不生效問題及解決方案
- Java如何獲取@TableField,@TableName注解的值
- MyBatisPlus使用@TableField注解處理默認(rèn)填充時間的問題
- Mybatis-plus使用注解 @TableField(exist = false)
- @TableField注解之深入理解與應(yīng)用方式
相關(guān)文章
dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter
這篇文章主要介紹了dubbo將異常轉(zhuǎn)換成RuntimeException的原因分析?ExceptionFilter問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Spring-webflux?響應(yīng)式編程的實例詳解
Spring 提供了兩個并行堆棧,一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API,另一個是完全反應(yīng)式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應(yīng)式存儲庫,這篇文章主要介紹了Spring-webflux?響應(yīng)式編程,需要的朋友可以參考下2022-09-09JAVA應(yīng)用系統(tǒng)工具快捷托盤實例代碼
JAVA應(yīng)用系統(tǒng)工具快捷托盤實例代碼,需要的朋友可以參考一下2013-02-02SpringBoot項目加入沖突動態(tài)監(jiān)測算法的實現(xiàn)
沖突動態(tài)監(jiān)測算法是一種網(wǎng)絡(luò)通信中的沖突檢測方法,適用于無線網(wǎng)絡(luò)或其他共享傳輸介質(zhì)的環(huán)境,本文主要介紹了SpringBoot項目加入沖突動態(tài)監(jiān)測算法的實現(xiàn),感興趣的可以了解一下2023-09-09Java遞歸調(diào)用如何實現(xiàn)數(shù)字的逆序輸出方式
這篇文章主要介紹了Java遞歸調(diào)用如何實現(xiàn)數(shù)字的逆序輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04RxJava2.x+ReTrofit2.x多線程下載文件的示例代碼
本篇文章主要介紹了RxJava2.x+ReTrofit2.x多線程下載文件的示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-09-09