MyBatis更新時(shí)新值為null時(shí),updateById()更新失敗問(wèn)題
MyBatis更新時(shí)新值為null時(shí),更新失敗
比如,類Rule中有個(gè)字段名為String note,備注是可以為空的。
note不為空時(shí)
- 更新方法是,只輸入要更新的值
- 可以構(gòu)造或者不構(gòu)造實(shí)體對(duì)象
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("name","rule1").set("note", "cannot ignore"); userMapper.update(null, updateWrapper);
note為空時(shí)
可行操作:
updateWrapper()方法,把可能為空的字段,如notes,手動(dòng)設(shè)置。
- 而對(duì)于一次更新,所有字段都有可能被更新的情況,這次我是用了反射,設(shè)置了所有可能被更新的字段
- 因?yàn)閡pdateWrapper的方法,會(huì)默認(rèn)忽略未被set的方法
手動(dòng)寫一個(gè)sql,在xml文件里。也可以繞開(kāi)NOT NULL的校驗(yàn)
不可行操作:
- updateById()方法,會(huì)默認(rèn)忽略 為null的note字段
- 有考慮過(guò)修改更新策略(默認(rèn)配置為“非NULL判斷”,需要改成“忽略判斷”:
全局更新配置:
單個(gè)字段的配置:字段加注解
主要想說(shuō)放棄修改配置的原因:
平時(shí)我都是用updateById(),很少用到updateWrapper的。
所以一開(kāi)始覺(jué)得,修改策略是一勞永逸。
但其實(shí),如果改了配置之后,原本項(xiàng)目里使用updateWrapper方法進(jìn)行更新的部分就會(huì)受到影響:正常來(lái)說(shuō),會(huì)忽略更新為null的字段;
修改配置后,就不會(huì)忽略了為null的字段,這樣會(huì)把原來(lái)的值誤覆蓋。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用maven的profile構(gòu)建不同環(huán)境配置的方法
這篇文章主要介紹了使用maven的profile構(gòu)建不同環(huán)境配置的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Java線程的調(diào)度與優(yōu)先級(jí)詳解
這篇文章主要為大家詳細(xì)介紹了Java線程的調(diào)度與優(yōu)先級(jí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼
這篇文章主要介紹了SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Spring Cloud Gateway重試機(jī)制原理解析
這篇文章主要介紹了Spring Cloud Gateway重試機(jī)制原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08springMVC之HandlerExceptionResolver使用
這篇文章主要介紹了springMVC之HandlerExceptionResolver使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11詳解mybatis.generator配上最新的mysql 8.0.11的一些坑
這篇文章主要介紹了詳解mybatis.generator配上最新的mysql 8.0.11的一些坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10使用spring oauth2框架獲取當(dāng)前登錄用戶信息的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用spring oauth2框架獲取當(dāng)前登錄用戶信息的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Java?超詳細(xì)講解Spring?MVC異常處理機(jī)制
Spring?MVC中提供了一個(gè)通用的異常處理機(jī)制,它提供了一個(gè)成熟、簡(jiǎn)潔并且清晰的異常處理方案。當(dāng)使用Spring?MVC開(kāi)發(fā)Web應(yīng)用時(shí),利用這套現(xiàn)成的機(jī)制進(jìn)行異常處理也更加自然并且高效2022-04-04