最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis-Plus更新數(shù)據(jù)忽略null值問題

 更新時(shí)間:2025年02月14日 10:38:59   作者:isAcilles  
本文主要介紹了Mybatis-Plus更新數(shù)據(jù)忽略null值問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、問題描述

近期正在家里美美休假,突然接個(gè)電話說是業(yè)務(wù)反饋生產(chǎn)上要操作置空某個(gè)字段,操作之后返回信息是成功,但實(shí)際沒有反應(yīng)。于是立刻打開電腦看看什么情況。

public Result<CstGrpInfoDto> edit(@Valid @RequestBody CstGrpInfoDto cstGrpInfoDto) {
       Result<CstGrpInfoDto> result = new Result<CstGrpInfoDto>();
       CstGrpInfo cstGrpInfoEo = cstGrpInfoService.getById(cstGrpInfoDto.getId());
       if (cstGrpInfoEo == null) {
          result.error400("未找到對(duì)應(yīng)實(shí)體");
       } else {
          BeanUtils.copyProperties(cstGrpInfoDto, cstGrpInfoEo);
          try {
              cstGrpInfoMapper.updateById(cstGrpInfoEo);
              result.success("修改成功!");
          } catch (Exception e) {
             log.error(e.getMessage(), e);
             result.error400("修改失敗!");
          }
       }
       return result;
    }

大致邏輯就是這樣,很簡(jiǎn)單的代碼。

一開始想難道是BeanUtils的鍋嗎?于是DEBUG查看,發(fā)現(xiàn)EO的屬性值都沒有問題,問題只能是在mybatisPlus的updateById方法上。

通過調(diào)用查看日志,發(fā)現(xiàn)調(diào)用updateById方法拼接的SQL中,不包含屬性值為null部分的字段.于是推測(cè):mybatisPlus不會(huì)修改為null的字段,上網(wǎng)一搜果然是這樣。

二、解決方案

方法1、使用UpdateWrapper方式更新

該方法適合明確需要修改的字段。

示例:

public int updateProduct(String productCode) {
        UpdateWrapper<Product> wrapper = new UpdateWrapper<>();
        wrapper.lambda().eq(Product::getProductCode, productCode)
                .set(Product::getName, null);
        return getBaseMapper().update(null, wrapper);
    }

方法2、對(duì)某個(gè)字段設(shè)置單獨(dú)的field-strategy

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

@TableField(strategy = FieldStrategy.IGNORED)
private String name;

方法3、設(shè)置全局的field-strategy (慎用)

import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分頁插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }

    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig globalConfig = new GlobalConfig();
        // 設(shè)置全局的更新策略
        GlobalConfig.DbConfig dbConfig = new GlobalConfig.DbConfig();
        dbConfig.setUpdateStrategy(FieldStrategy.IGNORED); // 設(shè)置為忽略 null 值
        globalConfig.setDbConfig(dbConfig);
        return globalConfig;
    }
}

properties文件格式:

mybatis-plus.global-config.db-config.update-strategy=ignored

 yml文件格式:

mybatis-plus:
  global-config:
    db-config:
      update-strategy: ignored  # 設(shè)置為忽略 null 值

 使用建議:建議根據(jù)業(yè)務(wù)實(shí)際情況來選擇使用哪種方式,對(duì)于有默認(rèn)值和不可為null的數(shù)據(jù),建議使用默認(rèn)策略。

到此這篇關(guān)于Mybatis-Plus更新數(shù)據(jù)忽略null值問題的文章就介紹到這了,更多相關(guān)Mybatis-Plus更新數(shù)據(jù)忽略null值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot服務(wù)設(shè)置禁止server.point端口的使用

    SpringBoot服務(wù)設(shè)置禁止server.point端口的使用

    本文主要介紹了SpringBoot服務(wù)設(shè)置禁止server.point端口的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • java整合SSM框架的圖文教程

    java整合SSM框架的圖文教程

    下面筆者就為大家分享一篇java整合SSM框架的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨筆者過來看看吧
    2017-11-11
  • SpringBoot中利用@Valid和@Validated進(jìn)行參數(shù)校驗(yàn)

    SpringBoot中利用@Valid和@Validated進(jìn)行參數(shù)校驗(yàn)

    為了保證數(shù)據(jù)的正確性、完整性,前后端都需要進(jìn)行數(shù)據(jù)檢驗(yàn),作為一名后端開發(fā)工程師,不能僅僅依靠前端來校驗(yàn)數(shù)據(jù),我們還需要對(duì)接口請(qǐng)求的參數(shù)進(jìn)行后端的校驗(yàn),所以本文給大家介紹了SpringBoot中利用@Valid和@Validated進(jìn)行參數(shù)校驗(yàn),需要的朋友可以參考下
    2024-09-09
  • 使用Java打印出10行的楊輝三角形的完整代碼

    使用Java打印出10行的楊輝三角形的完整代碼

    楊輝三角形是一個(gè)非常經(jīng)典的數(shù)學(xué)圖形,它在組合數(shù)學(xué)中有著重要的地位,每個(gè)數(shù)是它左上方和右上方的數(shù)的和(除了邊界上的數(shù)),本文將通過Java語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的程序來打印出10行的楊輝三角形,需要的朋友可以參考下
    2026-03-03
  • java異常(Exception)處理機(jī)制詳解

    java異常(Exception)處理機(jī)制詳解

    這篇文章主要介紹了java異常(Exception)處理機(jī)制詳解的相關(guān)資料,主要介紹異常的定義及使用方法,需要的朋友可以參考下
    2017-03-03
  • Token過期實(shí)現(xiàn)自動(dòng)續(xù)期的方法步驟

    Token過期實(shí)現(xiàn)自動(dòng)續(xù)期的方法步驟

    本文詳細(xì)解析了Token在防止表單重復(fù)提交、身份驗(yàn)證及過期處理中的應(yīng)用,涵蓋Token的生成流程、過期機(jī)制及續(xù)期方案,特別介紹了單token與雙token兩種策略,需要的朋友可以參考下
    2026-05-05
  • 解析java創(chuàng)建對(duì)象的全過程

    解析java創(chuàng)建對(duì)象的全過程

    文章總結(jié)了Java創(chuàng)建對(duì)象的幾種方式,包括使用new關(guān)鍵字、反射、clone和反序列化,此外,還詳細(xì)描述了創(chuàng)建對(duì)象的過程,包括類加載、內(nèi)存分配和對(duì)象初始化,最后,強(qiáng)調(diào)了并發(fā)情況下的操作原子性問題
    2025-12-12
  • springboot vue項(xiàng)目后端列表接口分頁模糊查詢

    springboot vue項(xiàng)目后端列表接口分頁模糊查詢

    這篇文章主要為大家介紹了springboot vue項(xiàng)目后端列表接口分頁模糊查詢,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Dubbo新版本zk注冊(cè)中心連接問題及解決

    Dubbo新版本zk注冊(cè)中心連接問題及解決

    這篇文章主要介紹了Dubbo新版本zk注冊(cè)中心連接問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringDataRedis簡(jiǎn)單使用示例代碼

    SpringDataRedis簡(jiǎn)單使用示例代碼

    這篇文章主要介紹了SpringDataRedis簡(jiǎn)單使用,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

佛坪县| 大化| 乐山市| 沐川县| 惠州市| 甘谷县| 吴江市| 浙江省| 五台县| 包头市| 贺州市| 克山县| 松桃| 肇源县| 镇原县| 宽城| 永康市| 响水县| 崇州市| 漠河县| 三亚市| 奇台县| 台湾省| 曲阜市| 徐汇区| 霍邱县| 大方县| 信丰县| 涞水县| 察哈| 岚皋县| 读书| 财经| 黎平县| 中超| 长岛县| 宽甸| 荆州市| 西林县| 中宁县| 永川市|