您好,登錄后才能下訂單哦!
本篇內容介紹了“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.
“MybatisPlus不改變全局策略和字段注解把字段更新為null的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。