欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Mybatis-Plus更新方法不更新NULL字段的問題

 更新時間:2023年12月08日 09:28:59   作者:@會飛的羊  
這篇文章主要介紹了解決Mybatis-Plus更新方法不更新NULL字段的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Mybatis-Plus更新方法不更新NULL字段

使用Mybatis-Plus中提供的updateById方法時遇到的一些問題,分享出來,避免大家踩坑,想將查詢結(jié)果中某個字段更新為null,但結(jié)果該字段更新失敗,執(zhí)行更新方法后還是查詢的原來的結(jié)果,沒有變。

查詢Mybatis-Plus的FieldStrategy:

由圖中可以看到,更新策略支持5種類型:默認(rèn)是追隨全局配置globalConfig,

mybatis-plus:
  ......
  configuration:
    ......
  global-config:
    ......
    db-config:
      ......

如果沒有進(jìn)行全局配置的話,會采用NOT_NULL的更新策略(sql上會加上不為NULL的判斷)。

解決辦法

1.設(shè)置全局的field-strategy(默認(rèn)追隨全局配置)

yml文件配置如下:

mybatis-plus:
    global-config:
    db-config:
      update-strategy: ignored

這樣做是全局性配置,會對所有的字段都忽略判斷,如果一些字段不想要修改,但是傳值的時候沒有傳遞過來,就會被更新為null,可能會影響其他業(yè)務(wù)數(shù)據(jù)的正確性。

2.在屬性上添加單獨的更新策略

/**
 * 申報組織
 */
@ApiModelProperty("申報組織")
@ExcelProperty(value = "申報組織", converter = DeptConverter.class)
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String reportingOrganization;

在更新代碼中,我們直接使用mybatis-plus中的updateById方法便可以更新成功

3.使用UpdateWrapper方式更新

在mybatis-plus中,除了updateById方法,還提供了一個update方法

// 根據(jù) whereWrapper 條件,更新記錄
boolean update(T updateEntity, Wrapper<T> whereWrapper);

直接使用update方法也可以將字段設(shè)置為null,代碼如下:

 /**
  * update更新字段為null
  * @param id
   * @return
   **/
      @Override
      public boolean updatePatentById(Integer id) {
     Patent patent = 			Optional.ofNullable(patentMapper.selectById(id)).orElseThrow(RuntimeException::new);
     LambdaUpdateWrapper<Patent> Wrapper = new LambdaUpdateWrapper<>();
     Wrapper.set(Patent::getCreateTime,null);
     Wrapper.set(Patent::getCreateUser,123);
    Wrapper.eq(Patent::getId,patent.getId());
    int i = patentMapper.update(patent, Wrapper);
    return i==1;
     }

這種方式對其他方法沒有影響,不需要修改全局配置,也不需要在字段上單獨加注解,推薦使用該方式。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實現(xiàn)HTML轉(zhuǎn)PDF及合并PDF文件詳細(xì)教程

    Java實現(xiàn)HTML轉(zhuǎn)PDF及合并PDF文件詳細(xì)教程

    之前在工作中遇到過一個需求,是將用戶填寫的申報,由固定模板的來生成pdf,后來想到先把內(nèi)容生成html,然后再把html格式的內(nèi)容轉(zhuǎn)換成pdf,這篇文章主要介紹了Java實現(xiàn)HTML轉(zhuǎn)PDF及合并PDF文件的相關(guān)資料,需要的朋友可以參考下
    2025-07-07
  • SpringBoot集成整合JWT與Shiro流程詳解

    SpringBoot集成整合JWT與Shiro流程詳解

    安全管理是軟件系統(tǒng)必不可少的的功能。根據(jù)經(jīng)典的“墨菲定律”——凡是可能,總會發(fā)生。如果系統(tǒng)存在安全隱患,最終必然會出現(xiàn)問題,這篇文章主要介紹了SpringBoot集成JWT、Shiro框架的使用
    2022-12-12
  • Spring中基于Java的配置@Configuration和@Bean用法詳解

    Spring中基于Java的配置@Configuration和@Bean用法詳解

    這篇文章主要介紹了Spring中基于Java的配置@Configuration和@Bean用法詳解,Spring中為了減少xml中配置,可以聲明一個配置類(例如SpringConfig)來對bean進(jìn)行配置。,需要的朋友可以參考下
    2019-06-06
  • mybatis-plus在yml中配置詳解

    mybatis-plus在yml中配置詳解

    本文主要介紹了mybatis-plus在yml中配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • SpringBoot下載docx文檔方式

    SpringBoot下載docx文檔方式

    這篇文章主要介紹了SpringBoot下載docx文檔方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 一篇文章了解Jackson注解@JsonFormat及失效解決辦法

    一篇文章了解Jackson注解@JsonFormat及失效解決辦法

    這篇文章主要給大家介紹了關(guān)于如何通過一篇文章了解Jackson注解@JsonFormat及失效解決辦法的相關(guān)資料,@JsonFormat注解是一個時間格式化注解,用于格式化時間,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • nacos配置ENC(...)加密實現(xiàn)方式

    nacos配置ENC(...)加密實現(xiàn)方式

    文章介紹在SpringBoot中使用Jasypt加密敏感配置(如數(shù)據(jù)庫密碼),通過添加依賴、配置密鑰、定義自定義加密器Bean實現(xiàn)加密解密,強調(diào)密鑰安全、日志保密及算法選擇,確保配置信息安全
    2025-09-09
  • 關(guān)于自定義過濾器獲取不到session問題

    關(guān)于自定義過濾器獲取不到session問題

    這篇文章主要介紹了關(guān)于自定義過濾器獲取不到session問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 使用Java8中Optional機(jī)制的正確姿勢

    使用Java8中Optional機(jī)制的正確姿勢

    我們知道 Java 8 增加了一些很有用的 API, 其中一個就是 Optional,下面這篇文章主要給大家介紹了關(guān)于如何正確使用Java8中Optional機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • Java?binLog日志監(jiān)聽方式

    Java?binLog日志監(jiān)聽方式

    文章介紹了如何在Windows下開啟MySQL的binLog日志,并提供了一個Java代碼示例,演示如何監(jiān)聽指定的表并進(jìn)行處理邏輯
    2024-11-11

最新評論