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

Mybatis-plus null值更新不生效問題解決

 更新時間:2024年10月11日 10:45:01   作者:chao09_01  
在使用Mybatis-plus進行數(shù)據(jù)更新時,默認策略是NOT_NULL,即null值不會被更新到數(shù)據(jù)庫,解決方法包括設(shè)置全局field-strategy、對特定字段設(shè)置field-strategy或使用UpdateWrapper方式更新,下面就來介紹一下

默認的mybatic-plus執(zhí)行updateById等操作時,如果相關(guān)字段內(nèi)容是null值,不會自動進行更新的,這是個坑,需要注意。

問題原因

mybatis-plus FieldStrategy 有三種策略:

  • IGNORED:0 忽略
  • NOT_NULL:1 非 NULL,默認策略
  • NOT_EMPTY:2 非空

默認更新策略是NOT_NULL:非 NULL;即通過接口更新數(shù)據(jù)時數(shù)據(jù)為NULL值時將不更新進數(shù)據(jù)庫。

解決方案

1. 設(shè)置全局的field-strategy

properties文件格式:

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

yml文件格式:

mybatis-plus:
  global-config:
      #字段策略 0:"忽略判斷",1:"非 NULL 判斷",2:"非空判斷"
    field-strategy: 0

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

2. 對某個字段設(shè)置單獨的field-strategy

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

@TableField(strategy=FieldStrategy.NOT_EMPTY)

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

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

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

/**
 * updateById更新字段為null
 * @param id
 * @return
 */
@Override
public boolean updateProductById(Integer id) {
    InsuranceProduct insuranceProduct = Optional.ofNullable(articleMapper.selectById(id)).orElseThrow(RuntimeException::new);
    insuranceProduct.setDutyJson(null);
    insuranceProductMapper.updateById(insuranceProduct);
}

使用上述方法,如果需要這樣處理的字段較多,那么就需要涉及對各個字段上都添加該注解,顯得有些麻煩了。那么,可以考慮使用第三種方法,不需要在字段上加注解也能更新成功。

3. 使用UpdateWrapper方式更新(推薦使用)

在mybatis-plus中,除了updateById方法,還提供了一個update方法,直接使用update方法也可以將字段設(shè)置為null,代碼如下:

/**
* 根據(jù)商品唯一編碼,更新商品責(zé)任的dutyjson
*/
  public int updateProduct(String productCode) {
	    InsuranceProduct old = lambdaQuery().eq(InsuranceProduct::getProductCode, productCode).one();
        UpdateWrapper<InsuranceProduct> wrapper = new UpdateWrapper<>();
        wrapper.lambda().eq(InsuranceProduct::getProductCode, productCode)
                .set(InsuranceProduct::getDutyJson, null)
                .eq(InsuranceProduct::getDeleted, 0);
        return getBaseMapper().update(old, wrapper);
    }

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

到此這篇關(guān)于Mybatis-plus null值更新不生效問題解決的文章就介紹到這了,更多相關(guān)Mybatis-plus null值更新不生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基礎(chǔ)字符編碼與內(nèi)存流詳細解讀

    Java基礎(chǔ)字符編碼與內(nèi)存流詳細解讀

    這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Java substring方法實現(xiàn)原理解析

    Java substring方法實現(xiàn)原理解析

    這篇文章主要介紹了Java substring方法實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • java中l(wèi)og使用小結(jié)

    java中l(wèi)og使用小結(jié)

    本文主要介紹了java中l(wèi)og使用小結(jié),一文搞清楚java所有日志框架,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • SpringBoot3如何集成Hazelcast

    SpringBoot3如何集成Hazelcast

    Hazelcast是一款優(yōu)秀的開源內(nèi)存數(shù)據(jù)網(wǎng)格平臺,它能夠提供分布式數(shù)據(jù)存儲和緩存解決方案,通過與SpringBoot3的整合,開發(fā)者可以輕松實現(xiàn)分布式緩存、數(shù)據(jù)共享和會話管理等功能,Hazelcast的內(nèi)存數(shù)據(jù)網(wǎng)格特性支持高性能的緩存系統(tǒng),能夠減少數(shù)據(jù)庫訪問次數(shù),提升應(yīng)用性能
    2024-10-10
  • Spring?Boot指標監(jiān)控及日志管理示例詳解

    Spring?Boot指標監(jiān)控及日志管理示例詳解

    Spring Boot Actuator可以幫助程序員監(jiān)控和管理SpringBoot應(yīng)用,比如健康檢查、內(nèi)存使用情況統(tǒng)計、線程使用情況統(tǒng)計等,這篇文章主要介紹了Spring?Boot指標監(jiān)控及日志管理,需要的朋友可以參考下
    2023-11-11
  • java自定義封裝StringUtils常用工具類

    java自定義封裝StringUtils常用工具類

    這篇文章主要為大家詳細介紹了java自定義封裝StringUtils常用工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個包

    IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個包

    這篇文章主要介紹了IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個包?本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 淺談為什么阿里巴巴要禁用Executors創(chuàng)建線程池

    淺談為什么阿里巴巴要禁用Executors創(chuàng)建線程池

    這篇文章主要介紹了淺談為什么阿里巴巴要禁用Executors創(chuàng)建線程池,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 基于Java+SSM實現(xiàn)電影院購票系統(tǒng)

    基于Java+SSM實現(xiàn)電影院購票系統(tǒng)

    今天小編給大家?guī)硪豢頢SM的電影院售票系統(tǒng),非常不錯的一個項目,是學(xué)習(xí)?javaweb編程必備。文中的示例代碼講解詳細,需要的可以參考一下
    2022-04-04
  • 使用spring@value加載時機

    使用spring@value加載時機

    這篇文章主要介紹了使用spring@value加載時機方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論