MyBatis-Plus updateById不更新null值的方法解決
前言
在 MyBatis-Plus 中,使用updateById,null字段并不會(huì)更新,其實(shí)是和更新的策略有關(guān),當(dāng)然,也有插入策略,本文基于MyBatis-Plus3.5.2,對(duì)插入和更新策略做講解。
方式一 調(diào)整全局的驗(yàn)證策略
注入全局配置,設(shè)置屬性 insertStrategy
、updateStrategy
缺點(diǎn):這樣做會(huì)對(duì)所有的字段都忽略判斷,如果一些字段不想要修改,但是傳值的時(shí)候沒(méi)有傳遞過(guò)來(lái),就會(huì)被更新為null
mybatis-plus: global-config: db-config: insert-strategy: ignored # "忽略判斷", 所有字段都插入 update-strategy: ignored # "忽略判斷", 所有字段都更新
insertStrategy
、updateStrategy
屬性的值有以下5種枚舉類(lèi)型:
ignored
“忽略判斷”, 所有字段都更新或插入not_null
“非 NULL 判斷”, 只更新或插入非NULL值not_empty
“非空判斷”, 只更新或插入非NULL值且非空字符串default
如果字段的值不為null,則進(jìn)行插入或者更新操作;如果字段的值為null,不執(zhí)行操作,執(zhí)行結(jié)果還是數(shù)據(jù)庫(kù)原來(lái)的值或者默認(rèn)值never
永遠(yuǎn)不進(jìn)行插入或更新操作,即使字段的值不為null
方式二 調(diào)整字段驗(yàn)證注解
在屬性上注解
根據(jù)具體情況,在需要更新或者插入的字段中調(diào)整驗(yàn)證注解,如忽略判斷,任何情況都進(jìn)行插入和更新操作:
@TableField(updateStrategy = FieldStrategy.IGNORED, insertStrategy = FieldStrategy.IGNORED)
方式三 使用 UpdateWrapper
如果沒(méi)有設(shè)置 insert-strategy
、update-strategy
的值,默認(rèn)為 default
使用以下方法來(lái)進(jìn)行更新操作,無(wú)設(shè)置的值還是數(shù)據(jù)庫(kù)原來(lái)的值,如下
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>(); updateWrapper.set("name", "一碗情深") .set("url", "https://blog.csdn.net/xiaohuihui1400") .eq("id", 1); userMapper.update(null, updateWrapper);
或者使用lambda表達(dá)式,只有將屬性賦值,數(shù)據(jù)庫(kù)的值才會(huì)改變,如下,把email設(shè)置成null
mapper.update( null, Wrappers.<User>lambdaUpdate() .set(User::getName, "一碗情深") .set(User::getUrl, "https://blog.csdn.net/xiaohuihui1400") .set(User::getEmail, null) // 把email設(shè)置成null .eq(User::getId, 1) );
到此這篇關(guān)于MyBatis-Plus updateById不更新null值的方法解決的文章就介紹到這了,更多相關(guān)MyBatis-Plus updateById不更新null值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于scanner.nextInt()等next()和scanner.nextIine()連用注意事項(xiàng)
這篇文章主要介紹了關(guān)于scanner.nextInt()等next()和scanner.nextIine()連用注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-04-04SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗
Spring Boot是一個(gè)用于構(gòu)建獨(dú)立的、基于生產(chǎn)級(jí)別的Spring應(yīng)用程序的框架,下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗的相關(guān)資料,需要的朋友可以參考下2024-08-08淺談java二進(jìn)制、十進(jìn)制、十六進(jìn)制、字符串之間的相互轉(zhuǎn)換
下面小編就為大家?guī)?lái)一篇淺談二進(jìn)制、十進(jìn)制、十六進(jìn)制、字符串之間的相互轉(zhuǎn)換。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-06-06java遞歸實(shí)現(xiàn)拼裝多個(gè)api的結(jié)果操作方法
本文給大家分享java遞歸實(shí)現(xiàn)拼裝多個(gè)api的結(jié)果的方法,說(shuō)白了就是好幾個(gè)API結(jié)果拼裝成的,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09SpringBoot集成mqtt的多模塊項(xiàng)目配置詳解
這篇文章主要介紹了SpringBoot集成mqtt的多模塊項(xiàng)目配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04PowerJob的AbstractScriptProcessor實(shí)現(xiàn)類(lèi)工作流程源碼解讀
這篇文章主要為大家介紹了PowerJob的AbstractScriptProcessor源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Maven倉(cāng)庫(kù)的具體使用(本地倉(cāng)庫(kù)+遠(yuǎn)程倉(cāng)庫(kù))
Maven 在某個(gè)統(tǒng)一的位置存儲(chǔ)所有項(xiàng)目的構(gòu)件,這個(gè)統(tǒng)一的位置,我們就稱(chēng)之為倉(cāng)庫(kù),本文主要介紹了Maven倉(cāng)庫(kù)的具體使用(本地倉(cāng)庫(kù)+遠(yuǎn)程倉(cāng)庫(kù)),感興趣的可以了解一下2023-11-11