MyBatis-Plus處理更新操作時(shí)的空值問題及解決過程
引言
MyBatis-Plus在執(zhí)行更新操作時(shí),可能會(huì)忽略字段值為空或null的情況,導(dǎo)致這些字段的值沒有被更新為數(shù)據(jù)庫中的NULL。
解決方案
方案一:注解方式
使用@TableField 注解的 updateStrategy屬性
MyBatis-Plus提供了@TableField注解的updateStrategy屬性,允許開發(fā)者自定義更新操作時(shí)的字段策略。
IGNORED:無論字段值為何,都將其包含在SET語句中。
相當(dāng)于 update table_a set column=#{column}, 屬性為null/空字符串都會(huì)被set進(jìn)去
NOT_NULL:僅當(dāng)字段值不為null時(shí),才將其包含在SET語句中。
相當(dāng)于 update table_a set <if test="column != null">column=#{column}</if>`
NOT_EMPTY:僅當(dāng)字段值不為null且不為空字符串時(shí),才將其包含在SET語句中。
相當(dāng)于 update table_a set <if test="column != null and
column!=''">column=#{column}</if>
例如,要將字段enddate在更新時(shí)設(shè)置為NULL,可以使用以下 注解:
@TableField(value = "ENDDATE", updateStrategy = FieldStrategy.IGNORED) private Date enddate;
注意:在MyBatis-Plus
3.1.2版本之后,strategy方法已被棄用,取而代之的是insertStrategy、updateStrategy和whereStrategy。
方案二: 全局配置
update-strategy有三種IGNORED,NOT_NULL,NOT_EMPTY,意思同上
# yml 配置: mybatis-plus: global-config: db-config: update-strategy: IGNORED
方案三:使用 UpdateWrapper (3.x) 更新
mapper.update(
new User().setName("張三").setAge(5),
Wrappers.<User>lambdaUpdate()
.set(User::getEmail, null) //把email設(shè)置成null
.eq(User::getId, 5)
);
總結(jié)
MyBatis-Plus提供了靈活的注解配置,以處理更新操作中的空值問題。
開發(fā)者可以根據(jù)具體的業(yè)務(wù)需求和數(shù)據(jù)庫特性選擇合適的方法。
正確處理空值不僅可以提高數(shù)據(jù)庫操作的效率,還可以避免數(shù)據(jù)不一致的問題。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot中@ConfigurationProperties自動(dòng)獲取配置參數(shù)的流程步驟
當(dāng)需要獲取配置文件中很多參數(shù)時(shí),我們可以定義參數(shù)的前綴相同,通過自動(dòng)映射 進(jìn)行獲取配置文件中參數(shù),所以本文給大家介紹了SpringBoot中@ConfigurationProperties自動(dòng)獲取配置參數(shù)的流程步驟,需要的朋友可以參考下2024-11-11
使用Feign實(shí)現(xiàn)微服務(wù)間文件下載
這篇文章主要為大家詳細(xì)介紹了使用Feign實(shí)現(xiàn)微服務(wù)間文件下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Spring?Native打包本地鏡像的操作方法(無需通過Graal的maven插件buildtools)
這篇文章主要介紹了Spring?Native打包本地鏡像,無需通過Graal的maven插件buildtools,本文探索一下,如果不通過這個(gè)插件來生成鏡像,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
Spring?Security中自定義cors配置及原理解析
在Spring框架中,通過自定義CORS配置可根據(jù)實(shí)際情況調(diào)整URL的協(xié)議、主機(jī)、端口等,以適應(yīng)"同源安全策略",配置原理涉及CorsConfigurer和CorsFilter,自定義配置需要注意@Configuration注解、方法名以及可能的@Autowired注解2024-10-10
Spring?Boot中KafkaListener的介紹、原理和使用方法案例詳解
本文介紹了Spring Boot中 @KafkaListener 注解的介紹、原理和使用方法,通過本文的介紹,我們希望讀者能夠更好地理解Spring Boot中 @KafkaListener 注解的使用方法,并在項(xiàng)目中更加靈活地應(yīng)用2023-09-09
深入淺析java web log4j 配置及在web項(xiàng)目中配置Log4j的技巧
這篇文章主要介紹了2015-11-11

