MybatisPlus 不修改全局策略和字段注解如何將字段更新為null
mybatis-plus 以下簡稱mp,目前應(yīng)該也算是主流的一款數(shù)據(jù)訪問層應(yīng)用框架。源于其對mybatis 的近乎完美的封裝,讓我們在使用的時候無比的順滑, 幾乎提供了所有單表操作的方法,大大提升了效率。并且這款框架還是國產(chǎn)的哦,沒了解過的可以去了解一下。
回歸正題,我們這次來講一下,怎么樣通過mp將數(shù)據(jù)庫中的一個字段更新為null. 可能很多人會覺得奇怪,更新為null, 直接set field = null 不就可以了。這里大家要注意一下,一般情況,我們在使用mp的時候,他的默認策略是空不更新, 這個也是非常主流和常見的一種設(shè)置。 為什么這么說呢, 比如我們將一個user表中的 del_flag 設(shè)置為1, 一般情況我們只需這么做就行:
User user = new User(); user.setId(1); user.setDelFlag(1); userService.update(user);
這個時候,其實其他的字段都是空,如果他的策略是空更新,那么執(zhí)行之后,表里就只有id 和del_flag有值,其余的字段都是Null,很明顯這不是我們想要的結(jié)果,這就是默認的空不更新策略。
這個時候就出現(xiàn)了一個痛點,必須我是需要把表中的某個字段更新為空,那應(yīng)該怎么做的?
一是我們將全局更新策略設(shè)置為空可以更新
二是將這個字段設(shè)置為空可以更新。
這兩種方式都是我極力不推薦的,大家也盡量不要使用這兩種方法,真的非常危險,有可能導(dǎo)致別人在調(diào)用更新方法的時候不小心就把你的某些字段置為null 了。
這里推薦一種方法,也是官網(wǎng)給出的,但是必須要求mp的版本 大于3, 如果是3以下的版本沒有這個功能,就是使用UpdateWrapper.
比如,我們想把 user表中的gender設(shè)置為空:
LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(User::getGender(), null);
wrapper.eq(User::getId(), 1);
userService.update(wrapper);
通過UpdateWrapper 可以設(shè)置null.
官網(wǎng)說明:
地址: https://mp.baomidou.com/guide/faq.html#%E6%8F%92%E5%85%A5%E6%88%96%E6%9B%B4%E6%96%B0%E7%9A%84%E5%AD%97%E6%AE%B5%E6%9C%89-%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2-%E6%88%96%E8%80%85-null
到此這篇關(guān)于MybatisPlus 不修改全局策略和字段注解如何將字段更新為null的文章就介紹到這了,更多相關(guān)MybatisPlus將字段更新為null內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot集成Mybatis中如何顯示日志的實現(xiàn)
這篇文章主要介紹了Spring Boot集成Mybatis中如何顯示日志的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Springboot?通過FastJson實現(xiàn)bean對象和Json字符串互轉(zhuǎn)問題
這篇文章主要介紹了Springboot?通過FastJson實現(xiàn)bean對象和Json字符串互轉(zhuǎn),本文嘗試驗證兩種場景給大家詳細介紹,對Springboot?FastJson實現(xiàn)bean和Json互轉(zhuǎn)問題,感興趣的朋友一起看看吧2022-08-08java數(shù)據(jù)結(jié)構(gòu)與算法之中綴表達式轉(zhuǎn)為后綴表達式的方法
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之中綴表達式轉(zhuǎn)為后綴表達式的方法,簡單分析了java中綴表達式轉(zhuǎn)為后綴表達式的相關(guān)實現(xiàn)方法與技巧,需要的朋友可以參考下2016-08-08