使用@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑記錄
@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑
@TableField(updateStrategy = FieldStrategy.IGNORED) private String phoneNo;
因?yàn)槁?lián)系人手機(jī)號碼可以修改為空值,所以加@TableField(updateStrategy = FieldStrategy.IGNORED)注解,可以讓phoneNo為空的時(shí)候用MP更新數(shù)據(jù)庫是不會(huì)忽略此字段。
后來我在修改該對象其他屬性時(shí),沒有設(shè)置phoneNo的值,更新時(shí)發(fā)現(xiàn)phoneNo就被更新為空。所以為了避免此情況我不得重新查詢該字段值再賦值一遍。
切記用此注解需謹(jǐn)慎!??!
注解 @TableField 的使用筆記
@TableField 是一個(gè)注解,用于標(biāo)識實(shí)體類中的字段映射關(guān)系。它是 MyBatis-Plus 框架提供的注解之一,用于與數(shù)據(jù)庫表字段進(jìn)行映射。
在使用 MyBatis-Plus 進(jìn)行數(shù)據(jù)庫操作時(shí),我們可以通過 @TableField 注解來指定實(shí)體類中的字段與數(shù)據(jù)庫表中的字段之間的映射關(guān)系。該注解可以用于類的成員變量上,也可以用于類的方法上。
常見的@TableField注解參數(shù)包括
- value:指定實(shí)體類字段與數(shù)據(jù)庫表字段的映射關(guān)系,如果實(shí)體類字段名與數(shù)據(jù)庫表字段名一致,可以省略該參數(shù)。
- exist:指定該字段是否為數(shù)據(jù)庫表字段,默認(rèn)為 true,表示是數(shù)據(jù)庫表字段;設(shè)置為 false 則表示不是數(shù)據(jù)庫表字段。
- fill:指定該字段是否為自動(dòng)填充字段,用于在插入和更新操作時(shí)自動(dòng)填充字段的值。
public class User { @TableField("user_name") private String userName; @TableField(value = "age", exist = false) private Integer age; // getter and setter }
上述代碼中,userName 字段與數(shù)據(jù)庫表字段 user_name 進(jìn)行映射,而 age 字段并不是數(shù)據(jù)庫表字段。
另外:
@TableName注解,value值指定對應(yīng)的表名。
@Data @AllArgsConstructor @NoArgsConstructor @TableName("t_user") public class User { private Long id; private String name; }
@TableId注解:MyBatisPlus在實(shí)現(xiàn)CRUD默認(rèn)會(huì)將Id作為主鍵,在插入數(shù)據(jù)時(shí),使用雪花算法生成Id,如果主鍵不叫Id則添加功能會(huì)失敗。
所以@TableId有下列用法:
@TableId(value = “uid”) //value指定當(dāng)前作為主鍵的字段 @TableId(value = “id”,type = IdType.AUTO) //將當(dāng)前屬性所對應(yīng)的字段作為主鍵
@Data @AllArgsConstructor @NoArgsConstructor @TableName("t_user") public class User { @TableId private Long id; private String name; }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java高并發(fā)解決方案以及高負(fù)載優(yōu)化方法
這篇文章主要介紹了淺談Java高并發(fā)解決方案以及高負(fù)載優(yōu)化方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java實(shí)現(xiàn)經(jīng)典游戲之大魚吃小魚
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)經(jīng)典游戲之大魚吃小魚,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java游戲開發(fā)有一定幫助,需要的可以參考一下2022-08-08CompletableFuture創(chuàng)建及功能使用全面詳解
這篇文章主要為大家介紹了CompletableFuture創(chuàng)建及功能使用全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07詳解springboot如何更新json串里面的內(nèi)容
這篇文章主要為大家介紹了springboot 如何更新json串里面的內(nèi)容,文中有詳細(xì)的解決方案供大家參考,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-10-10關(guān)于Springboot打成JAR包后讀取外部配置文件的問題
這篇文章主要介紹了關(guān)于Springboot打成JAR包后讀取外部配置文件的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Java日期接收報(bào)錯(cuò):could?not?be?parsed,?unparsed?text?found?a
在做Java開發(fā)時(shí)肯定會(huì)碰到傳遞時(shí)間參數(shù)的情況,這篇文章主要給大家介紹了關(guān)于Java日期接收報(bào)錯(cuò):could?not?be?parsed,?unparsed?text?found?at?index?10的解決辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01