Mybatis-Plus將字段設(shè)置為null解決方法
Mybatis-Plus將字段設(shè)置為null
項目場景:
最近在做一個需求的時候需要把數(shù)據(jù)庫中的某個字段設(shè)置為空
問題描述:
在代碼中通過set方法對一個字段設(shè)置成null,發(fā)現(xiàn)并沒有起作用
原因分析:
經(jīng)過查詢是因為Mybatis-Plus默認(rèn)的更新策略設(shè)置的問題,Mybatis-Plus中FieldStrategy有三種策略:
- IGNORED:忽略。不管有沒有有設(shè)置屬性,所有的字段都會設(shè)置到insert語句中,如果沒設(shè)置值會更新為null;
- NOT_NULL:非 NULL,默認(rèn)策略。也就是忽略null的字段,不忽略"";
- NOT_EMPTY:非空。為null,為空串的忽略,就是如果設(shè)置值為null,“”,不會插入數(shù)據(jù)庫;
默認(rèn)的是NOT_NULL,也就是忽略null字段,所以更新不成功。
解決方案:
需對 FieldStrategy 策略進(jìn)行調(diào)整,有如下三種方式:
方式一:調(diào)整全局的驗證策略,如下:
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
typeAliasesPackage: com.test.application.test.admin.entity
global-config:
#主鍵類型 0:"數(shù)據(jù)庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數(shù)字類型唯一ID)", 3:"全局唯一ID UUID";
id-type: 0
#字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
field-strategy: 0
#駝峰下劃線轉(zhuǎn)換
db-column-underline: true
#刷新mapper 調(diào)試神器
refresh-mapper: true
#數(shù)據(jù)庫大寫下劃線轉(zhuǎn)換
#capital-mode: true
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
方式二:【推薦】調(diào)整字段驗證注解
Mybatis-Plus 版本3.1.2及以上,根據(jù)具體情況,在需要更新的字段中調(diào)整驗證注解,如驗證非空:
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) private String name; 或者單個的例子: @TableField(updateStrategy = FieldStrategy.IGNORED) private String username;
方式三:使用 UpdateWrapper (3.x)
使用以下方法來進(jìn)行更新或插入操作:
//updateAllColumnById(entity) // 全部字段更新: 3.0已經(jīng)移除
mapper.update(
new User().setName("mp").setAge(3),
Wrappers.<User>lambdaUpdate()
.set(User::getEmail, null) //把email設(shè)置成null
.eq(User::getId, 2)
);
// 也可以參考下面這種寫法
mapper.update(
null,
Wrappers.<User>lambdaUpdate()
.set(User::getAge, 3)
.set(User::getName, "mp")
.set(User::getEmail, null) // 把email設(shè)置成null
.eq(User::getId, 2)
);總結(jié)
到此這篇關(guān)于Mybatis-Plus將字段設(shè)置為null的文章就介紹到這了,更多相關(guān)Mybatis-Plus字段設(shè)置null內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于maven搭建一個ssm的web項目的詳細(xì)圖文教程
這篇文章主要介紹了基于maven搭建一個ssm的web項目的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
spring boot教程之產(chǎn)生的背景及其優(yōu)勢
這篇文章主要介紹了spring boot教程之產(chǎn)生的背景及其優(yōu)勢的相關(guān)資料,需要的朋友可以參考下2022-08-08
使用React和springboot做前后端分離項目的步驟方式
這篇文章主要介紹了使用React和springboot做前后端分離項目的步驟方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
springboot+mybatis配置控制臺打印sql日志的方法
這篇文章主要介紹了springboot+mybatis配置控制臺打印sql日志的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
mybatis.type-aliases-package之巨坑的解決
這篇文章主要介紹了mybatis.type-aliases-package之巨坑的解決,具有很好的參考價值,希望對大家有所幫助。2021-09-09
Java數(shù)據(jù)結(jié)構(gòu)之線段樹的原理與實現(xiàn)
線段樹是一種二叉搜索樹,是用來維護(hù)區(qū)間信息的數(shù)據(jù)結(jié)構(gòu)。本文將利用示例詳細(xì)講講Java數(shù)據(jù)結(jié)構(gòu)中線段樹的原理與實現(xiàn),需要的可以參考一下2022-06-06

