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

解決mybatisPlus 中的field-strategy配置失效問題

 更新時間:2021年02月03日 11:22:29   作者:胡GaQue  
這篇文章主要介紹了解決mybatisPlus 中的field-strategy配置失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

場景:

前端修改給后臺傳遞了幾個空字符串。后臺使用mybatisPlus 作為dao層。結(jié)果發(fā)現(xiàn)空字符串也更新了,mybatisPlus 的field-strategy設(shè)置為 2 非空;

解決思路:

查看mybatisPlus 版本差異。發(fā)現(xiàn)field-strategy已經(jīng)棄用,從3.1.2 后使用下面這幾個配置對非空進(jìn)行判斷

insertStrategy

類型:com.baomidou.mybatisplus.annotation.FieldStrategy

默認(rèn)值:NOT_NULL

字段驗(yàn)證策略之 insert

說明:

在 insert 的時候的字段驗(yàn)證策略 目前沒有默認(rèn)值,等 {@link #fieldStrategy} 完全去除掉,會給個默認(rèn)值 NOT_NULL 沒配則按 {@link #fieldStrategy} 為準(zhǔn)

#updateStrategy

類型:com.baomidou.mybatisplus.annotation.FieldStrategy

默認(rèn)值:NOT_NULL

字段驗(yàn)證策略之 update

說明:

在 update 的時候的字段驗(yàn)證策略 目前沒有默認(rèn)值,等 {@link #fieldStrategy} 完全去除掉,會給個默認(rèn)值 NOT_NULL 沒配則按 {@link #fieldStrategy} 為準(zhǔn)

#selectStrategy(since 3.1.2)

類型:com.baomidou.mybatisplus.annotation.FieldStrategy

默認(rèn)值:NOT_NULL

字段驗(yàn)證策略之 select

說明:

在 select 的時候的字段驗(yàn)證策略: wrapper 根據(jù)內(nèi)部 entity 生成的 where 條件 目前沒有默認(rèn)值,等 {@link #fieldStrategy} 完全去除掉,會給個默認(rèn)值 NOT_NULL 沒配則按 {@link #fieldStrategy} 為準(zhǔn)

補(bǔ)充:mybatisPlus中的field-strategy(字段更新插入策略):null值插入和更新問題

mybatisPlus中null值插入和更新問題

配置mybatisPlus的項(xiàng)目中,默認(rèn)進(jìn)行了不是全量更新的策略:NOT_NULL。

即在利用updateWrapper更新時,會做null判斷,如果傳參數(shù)為null,就不會更新。

在實(shí)際項(xiàng)目需求中可能配置全局更新策略為:NOT_NULL,但是某些場景更新時需要插入這個null值進(jìn)行更新。如何解決這個問題呢?

實(shí)際項(xiàng)目解決方法示例一

實(shí)際項(xiàng)目中,配置文件中配置全局字段策略為NOT_NULL。

需求:實(shí)際項(xiàng)目中,apply_teacher字段當(dāng)它為null時需要把null值更新進(jìn)去。

困難:因?yàn)槿肿侄尾呗詾镹OT_NULL,所以默認(rèn)不會更新null值進(jìn)去。

解決方法:

利用條件構(gòu)造器當(dāng)值為null時set為null。

代碼:

Wrapper<StuApplyInfoEntity> updateWrapper = new UpdateWrapper<>();
((UpdateWrapper) updateWrapper).set(saveApply.getApplyTeacher() == null, "apply_teacher", null);

實(shí)際項(xiàng)目解決方法示例二

需求:state字段所有值都更新和插入。

困難:因?yàn)槿肿侄尾呗詾镹OT_NULL,所以默認(rèn)不會更新null值進(jìn)去。

解決方法:

在entity中設(shè)置state設(shè)置注解@TableField(),配置FieldStrategy為IGNORED。意思是"忽略判斷",所有值都更新和插入。

代碼:

@TableField(strategy = FieldStrategy.IGNORED, el = "state, jdbcType=VARCHAR")
private String state;

field-strategy字段更新插入策略介紹

枚舉類FieldStrategy源碼

public enum FieldStrategy {
 /**
  * 忽略判斷
  */
 IGNORED,
 /**
  * 非NULL判斷
  */
 NOT_NULL,
 /**
  * 非空判斷
  */
 NOT_EMPTY,
 /**
  * 默認(rèn)的,一般只用于注解里
  * <p>1. 在全局里代表 NOT_NULL</p>
  * <p>2. 在注解里代表 跟隨全局</p>
  */
 DEFAULT
}

枚舉類字段簡介

IGNORED:“忽略判斷”,所有字段都更新和插入。

NOT_NULL:“非 NULL 判斷”,只更新和插入非NULL值。

NOT_EMPTY:“非空判斷”, 只更新和插入非NULL值且非空字符串。

DEFAULT: 默認(rèn)的,一般只用于注解里。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Spring MVC接受表單自動封裝特性實(shí)例解析

    Spring MVC接受表單自動封裝特性實(shí)例解析

    這篇文章主要介紹了Spring MVC接受表單自動封裝特性實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • IDEA?Eval?Reset?使用方法匯總

    IDEA?Eval?Reset?使用方法匯總

    本文給大家介紹了IDEA?Eval?Reset?使用方法,安裝插件包括離線安裝方式和在線安裝方式,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Netty分布式客戶端處理接入事件handle源碼解析

    Netty分布式客戶端處理接入事件handle源碼解析

    這篇文章主要為大家介紹了Netty源碼分析客戶端流程處理接入事件handle創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 學(xué)生視角手把手帶你寫Java?線程池初版

    學(xué)生視角手把手帶你寫Java?線程池初版

    作者是一個來自河源的大三在校生,以下筆記都是作者自學(xué)之路的一些淺薄經(jīng)驗(yàn),如有錯誤請指正,將來會不斷的完善筆記,幫助更多的Java愛好者入門
    2022-03-03
  • Spring線程池ThreadPoolTaskExecutor配置詳情

    Spring線程池ThreadPoolTaskExecutor配置詳情

    本篇文章主要介紹了Spring線程池ThreadPoolTaskExecutor配置詳情,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java實(shí)現(xiàn)簡單LRU緩存機(jī)制的方法

    Java實(shí)現(xiàn)簡單LRU緩存機(jī)制的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)簡單LRU緩存機(jī)制的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Mybatis如何配置連接池

    Mybatis如何配置連接池

    本文通過實(shí)例代碼給大家詳細(xì)介紹了mybatis配置連接池的方法,非常不錯,具有參考借鑒價值,感興趣的朋友參考下吧
    2016-12-12
  • Spring Boot 2.7.6整合redis與低版本的區(qū)別

    Spring Boot 2.7.6整合redis與低版本的區(qū)別

    這篇文章主要介紹了Spring Boot 2.7.6整合redis與低版本的區(qū)別,文中補(bǔ)充介紹了SpringBoot各個版本使用Redis之間的區(qū)別實(shí)例講解,需要的朋友可以參考下
    2023-02-02
  • java多線程編程之管道通信詳解

    java多線程編程之管道通信詳解

    這篇文章主要為大家詳細(xì)介紹了java多線程編程之線程間的通信,探討使用管道進(jìn)行通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • SpringBoot自定義轉(zhuǎn)換器應(yīng)用實(shí)例講解

    SpringBoot自定義轉(zhuǎn)換器應(yīng)用實(shí)例講解

    SpringBoot在響應(yīng)客戶端請求時,將提交的數(shù)據(jù)封裝成對象時,使用了內(nèi)置的轉(zhuǎn)換器,SpringBoot 也支持自定義轉(zhuǎn)換器,這個內(nèi)置轉(zhuǎn)換器在 debug的時候,可以看到,提供了124個內(nèi)置轉(zhuǎn)換器
    2022-08-08

最新評論