亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mybatis-plus如何更新Null字段詳解

 更新時(shí)間:2023年07月13日 09:12:43   作者:剽悍一小兔  
MyBatis-plus在進(jìn)行更新操作時(shí)不會(huì)更新傳入實(shí)體中為null或默認(rèn)值屬性字段,只更新不為null的值、非默認(rèn)值的屬性字段,這篇文章主要給大家介紹了關(guān)于Mybatis-plus如何更新Null字段的相關(guān)資料,需要的朋友可以參考下

本文介紹【Mybatis-plus】updateById()方法不能更新字段為null的原因及解決辦法。

一、問(wèn)題描述

在日常項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)使用Mybatis-plus的updateById()方法,快速將接收道德參數(shù)或者查詢結(jié)果中原本不為null的字段更新為null,并且該字段在數(shù)據(jù)庫(kù)中可為null,這個(gè)時(shí)候使用updateById()并不能實(shí)現(xiàn)這個(gè)操作,不會(huì)報(bào)錯(cuò),但是對(duì)應(yīng)的字段并沒(méi)有更新為null。

二、問(wèn)題原因

Mybatis-plus的字段策略(FieldStrategy)有三種策略:

IGNORED:0 忽略

NOT_NULL:1 非 NULL,默認(rèn)策略

NOT_EMPTY:2 非空

而默認(rèn)的更新策略是NOT_NULL:非NULL; 即通過(guò)接口更新數(shù)據(jù)時(shí)數(shù)據(jù)為NULL值時(shí)將不更新進(jìn)數(shù)據(jù)庫(kù)。

三、解決方案

1.直接在mapper.xml中寫(xiě)sql:

 update table A set 字段a = null where 字段b = 條件

2.設(shè)置全局的FieldStrategy

在配置文件中修改全局策略

properties文件格式:

mybatis-plus.global-config.db-config.field-strategy=ignored
 
#yml文件格式:
mybatis-plus:
  global-config:
      #字段策略 0:"忽略判斷",1:"非 NULL 判斷",2:"非空判斷"
    field-strategy: 0

這樣做是進(jìn)行全局配置,在更新時(shí)會(huì)忽略對(duì)所有字段的判斷。但是如果一些字段沒(méi)有傳值過(guò)來(lái),會(huì)被直接更新為null,可能會(huì)影響其它業(yè)務(wù)數(shù)據(jù)的準(zhǔn)確性。不推薦使用此方法。

3.對(duì)指定的字段單獨(dú)設(shè)置field-strategy

根據(jù)具體情況,在需要更新的字段中調(diào)整驗(yàn)證注解,如驗(yàn)非空:

@TableField(strategy=FieldStrategy.NOT_EMPTY)

這樣的話,我們只需要在需要更新為null的字段上,設(shè)置忽略策略,如下:

@TableField(updateStrategy = FieldStrategy.IGNORED)
private String updateBy;

設(shè)置好了之后,在更新時(shí)就可以直接使用mybatis-plus中的updateById方法就可以成功將字段更新為null,但是這樣做存在一定的弊端,就是當(dāng)需要這樣處理的字段比較多時(shí),要給對(duì)應(yīng)的字段都要添加上這樣的注解。

4.使用update方法結(jié)合UpdateWrapper方式更新

User user=userService.lambdaQuery().eq(User::getUserId,userId).one();
if(user!=null){
    userService.update(user,new UpdateWrapper<User>().lambda()
               .set(User::getUserName,null)
               .eq(User::getUserId,user.getUserId()));
}

這種方法不會(huì)影響其它方法,不需要修改全局配置,也不需要在字段上單獨(dú)加注解,只需要在使用的時(shí)候設(shè)置一下要修改的字段為null就可以更新成功,推薦使用方法4。

總結(jié)

到此這篇關(guān)于Mybatis-plus如何更新Null字段的文章就介紹到這了,更多相關(guān)Mybatis-plus更新Null字段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合MybatisPlus的教程詳解

    SpringBoot整合MybatisPlus的教程詳解

    這篇文章主要介紹了SpringBoot整合MybatisPlus的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • springboot 接收List 入?yún)⒌膸追N方法

    springboot 接收List 入?yún)⒌膸追N方法

    本文主要介紹了springboot 接收List 入?yún)⒌膸追N方法,本文主要介紹了7種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Spring?Data?JPA關(guān)系映射@OneToOne實(shí)例解析

    Spring?Data?JPA關(guān)系映射@OneToOne實(shí)例解析

    這篇文章主要為大家介紹了Spring?Data?JPA關(guān)系映射@OneToOne實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 注意Java中?new?BigDecimal(double?val)?的使用

    注意Java中?new?BigDecimal(double?val)?的使用

    這篇文章主要介紹了注意Java中?new?BigDecimal(double?val)?的使用,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • SpringBoot2零基礎(chǔ)到精通之自動(dòng)配置底層分析及小技巧

    SpringBoot2零基礎(chǔ)到精通之自動(dòng)配置底層分析及小技巧

    SpringBoot是一種整合Spring技術(shù)棧的方式(或者說(shuō)是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開(kāi)發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)自動(dòng)配置的底層分析與一些開(kāi)發(fā)中的小技巧
    2022-03-03
  • 淺析Spring基于注解的AOP

    淺析Spring基于注解的AOP

    Spring是一個(gè)廣泛應(yīng)用的框架,SpringAOP則是Spring提供的一個(gè)標(biāo)準(zhǔn)易用的aop框架,依托Spring的IOC容器,提供了極強(qiáng)的AOP擴(kuò)展增強(qiáng)能力,對(duì)項(xiàng)目開(kāi)發(fā)提供了極大地便利
    2022-11-11
  • 快速理解spring中的各種注解

    快速理解spring中的各種注解

    這篇文章主要介紹了快速理解spring中的各種注解,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • 使用IDEA創(chuàng)建Servlet程序的詳細(xì)步驟

    使用IDEA創(chuàng)建Servlet程序的詳細(xì)步驟

    在學(xué)習(xí)servlet過(guò)程中,參考的教程是用eclipse完成的,而我在練習(xí)的過(guò)程中是使用IDEA的,在創(chuàng)建servlet程序時(shí)遇到了挺多困難,在此記錄一下如何用IDEA完整創(chuàng)建一個(gè)servlet程序,感興趣的朋友一起看看吧
    2024-08-08
  • SpringMVC 跨重定向請(qǐng)求傳遞數(shù)據(jù)的方法實(shí)現(xiàn)

    SpringMVC 跨重定向請(qǐng)求傳遞數(shù)據(jù)的方法實(shí)現(xiàn)

    這篇文章主要介紹了SpringMVC 跨重定向請(qǐng)求傳遞數(shù)據(jù)的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java中泛型通配符的使用方法示例

    Java中泛型通配符的使用方法示例

    這篇文章主要介紹了Java中泛型通配符的使用方法,結(jié)合實(shí)例形式分析了java中泛型通配符的功能、語(yǔ)法及在泛型類創(chuàng)建泛型對(duì)象中的使用方法,需要的朋友可以參考下
    2019-08-08

最新評(píng)論