Mybatis?saveAndUpdate空值不更新問題及解決
Mybatis saveAndUpdate空值不更新
@TableField注解有三種更新策略
public enum FieldStrategy { ? ? IGNORED,//參數(shù)為空也更新到數(shù)據(jù)庫 ? ? NOT_NULL,//參數(shù)不能為null ? ? NOT_EMPTY;//參數(shù)不能為空 ? ? private FieldStrategy() { ? ? } }
如下,如果想要name字段為空或者null時也更新數(shù)據(jù)庫數(shù)據(jù),注解上加 strategy = FieldStrategy.IGNORED
@TableField(strategy = FieldStrategy.IGNORED,value="name") ? ? private String name;
Mybatis使用update更新值為null時不生效
純屬記錄使用過程中遇到的問題更新null值沒有生效的問題解決辦法,內(nèi)容較為簡單。
出現(xiàn)的問題
前端修改數(shù)據(jù)時把屬性內(nèi)容刪除然后進行保存,默認傳的null,后端更新時屬性值為null,然后調(diào)用updateById進行更新時發(fā)現(xiàn)該屬性還是原來的值:
name:"tt"; //前端頁面把該屬性內(nèi)容進行刪除傳給我后端 { name: null } //后端接收到的 name: null //使用該方法進行更新 updateById(); //結(jié)果name還是等于更新前的值 name: "tt";
后面百度發(fā)現(xiàn)該update方法不會對屬性null的進行更新
原因
mybatis-plus FieldStrategy 有三種策略:
IGNORED
:忽略NOT_NULL
:非 NULL,默認策略NOT_EMPTY
:非空
默認非空,所有更新時不生效的問題
解決方法
①設置全局的field-strategy
這樣全局配置會把所有的屬性都忽略,對于一些不需要改的屬性可能會影響業(yè)務的準確性。
②給單獨的屬性設置field-strategy
根據(jù)實際應用情況對某些屬性增加該注解來忽略策略
@TableField(strategy=FieldStrategy.IGNORED)
這樣增加該注解的屬性就可以使用updateById()方法進行更新null值。
------當然還有其他的好的方法也可以去參考
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
application.yml文件中如何開啟mybatis自動駝峰映射
這篇文章主要介紹了application.yml文件中開啟mybatis自動駝峰映射的方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08為什么wait和notify必須放在synchronized中使用
這篇文章主要介紹了為什么wait和notify必須放在synchronized中使用,文章圍繞主題的相關問題展開詳細介紹,具有一定的參考價值,需要的小伙伴可以參考以參考一下2022-05-05IDEA?一直scanning?files?to?index的四種完美解決方法(VIP典藏版)
這篇文章主要介紹了IDEA?一直scanning?files?to?index的四種完美解決方法(VIP典藏版),推薦第四種方法,第四種方法摸索研究后得出,親測好用,需要的朋友參考下吧2023-10-10Mybatis的SqlRunner執(zhí)行流程實現(xiàn)
MyBatis提供了一個用于操作數(shù)據(jù)庫的SqlRunner工具類,對JDBC做了很好的封裝,本文主要介紹了Mybatis的SqlRunner執(zhí)行流程實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-10-10從java源碼分析線程池(池化技術(shù))的實現(xiàn)原理
這篇文章主要介紹了從java源碼分析線程池(池化技術(shù))的實現(xiàn)原理,池化技術(shù)是一種編程技巧,當程序出現(xiàn)高并發(fā)時,能夠明顯的優(yōu)化程序,降低系統(tǒng)頻繁創(chuàng)建銷毀連接等額外開銷,下文更多的相關介紹需要的小伙伴可以參考一下2022-04-04