MybatisPlus 不修改全局策略和字段註解如何將字段更新為null

mybatis-plus 以下簡稱mp,目前應該也算是主流的一款數據訪問層應用框架。源於其對mybatis 的近乎完美的封裝,讓我們在使用的時候無比的順滑, 幾乎提供瞭所有單表操作的方法,大大提升瞭效率。並且這款框架還是國產的哦,沒瞭解過的可以去瞭解一下。 

回歸正題,我們這次來講一下,怎麼樣通過mp將數據庫中的一個字段更新為null. 可能很多人會覺得奇怪,更新為null, 直接set field = null 不就可以瞭。這裡大傢要註意一下,一般情況,我們在使用mp的時候,他的默認策略是空不更新, 這個也是非常主流和常見的一種設置。 為什麼這麼說呢, 比如我們將一個user表中的  del_flag 設置為1,  一般情況我們隻需這麼做就行:

User user = new User();
 
user.setId(1);
 
user.setDelFlag(1);
 
userService.update(user);

這個時候,其實其他的字段都是空,如果他的策略是空更新,那麼執行之後,表裡就隻有id 和del_flag有值,其餘的字段都是Null,很明顯這不是我們想要的結果,這就是默認的空不更新策略。

這個時候就出現瞭一個痛點,必須我是需要把表中的某個字段更新為空,那應該怎麼做的?

一是我們將全局更新策略設置為空可以更新

二是將這個字段設置為空可以更新。

這兩種方式都是我極力不推薦的,大傢也盡量不要使用這兩種方法,真的非常危險,有可能導致別人在調用更新方法的時候不小心就把你的某些字段置為null 瞭。

這裡推薦一種方法,也是官網給出的,但是必須要求mp的版本 大於3, 如果是3以下的版本沒有這個功能,就是使用UpdateWrapper.

比如,我們想把  user表中的gender設置為空: 

LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
 
wrapper.set(User::getGender(), null);
 
wrapper.eq(User::getId(), 1);
 
userService.update(wrapper);
通過UpdateWrapper 可以設置null.

官網說明: 

地址: 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

到此這篇關於MybatisPlus 不修改全局策略和字段註解如何將字段更新為null的文章就介紹到這瞭,更多相關MybatisPlus將字段更新為null內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!