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

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

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

場(chǎng)景:

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

解決思路:

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

insertStrategy

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

默認(rèn)值:NOT_NULL

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

說明:

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

#updateStrategy

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

默認(rèn)值:NOT_NULL

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

說明:

在 update 的時(shí)候的字段驗(yàn)證策略 目前沒有默認(rèn)值,等 {@link #fieldStrategy} 完全去除掉,會(huì)給個(gè)默認(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 的時(shí)候的字段驗(yàn)證策略: wrapper 根據(jù)內(nèi)部 entity 生成的 where 條件 目前沒有默認(rèn)值,等 {@link #fieldStrategy} 完全去除掉,會(huì)給個(gè)默認(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更新時(shí),會(huì)做null判斷,如果傳參數(shù)為null,就不會(huì)更新。

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

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

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

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

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

解決方法:

利用條件構(gòu)造器當(dāng)值為null時(shí)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)不會(huì)更新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
}

枚舉類字段簡(jiǎn)介

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

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

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

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

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

相關(guān)文章

  • JAVA后臺(tái)實(shí)現(xiàn)文件批量下載方式

    JAVA后臺(tái)實(shí)現(xiàn)文件批量下載方式

    這篇文章主要介紹了JAVA后臺(tái)實(shí)現(xiàn)文件批量下載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Springboot 如何使用 SaToken 進(jìn)行登錄認(rèn)證、權(quán)限管理及路由規(guī)則接口攔截

    Springboot 如何使用 SaToken 進(jìn)行登錄認(rèn)證、權(quán)限管理及路由規(guī)則接口攔截

    Sa-Token 是一個(gè)輕量級(jí) Java 權(quán)限認(rèn)證框架,主要解決:登錄認(rèn)證、權(quán)限認(rèn)證、單點(diǎn)登錄、OAuth2.0、分布式Session會(huì)話、微服務(wù)網(wǎng)關(guān)鑒權(quán) 等一系列權(quán)限相關(guān)問題,這篇文章主要介紹了Springboot 使用 SaToken 進(jìn)行登錄認(rèn)證、權(quán)限管理以及路由規(guī)則接口攔截,需要的朋友可以參考下
    2024-06-06
  • JAVA 對(duì)接騰訊云直播的實(shí)現(xiàn)

    JAVA 對(duì)接騰訊云直播的實(shí)現(xiàn)

    這篇文章主要介紹了JAVA 對(duì)接騰訊云直播的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java中ThreadLocal的使用

    Java中ThreadLocal的使用

    這篇文章主要介紹了Java中ThreadLocal的使用,靜態(tài)內(nèi)部類的加載是在程序中調(diào)用靜態(tài)內(nèi)部類的時(shí)候加載的,和外部類的加載沒有必然關(guān)系, 但是在加載靜態(tài)內(nèi)部類的時(shí)候 發(fā)現(xiàn)外部類還沒有加載,那么就會(huì)先加載外部類 ,加載完外部類之后,再加載靜態(tài)內(nèi)部類,需要的朋友可以參考下
    2023-09-09
  • 注解、原生Spring、SchemaBased三種方式實(shí)現(xiàn)AOP代碼案例

    注解、原生Spring、SchemaBased三種方式實(shí)現(xiàn)AOP代碼案例

    這篇文章主要介紹了注解、原生Spring、SchemaBased三種方式實(shí)現(xiàn)AOP的方法介紹,文中有詳細(xì)的代碼示例,對(duì)我們的學(xué)習(xí)有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • Java中&和&&的區(qū)別簡(jiǎn)單介紹

    Java中&和&&的區(qū)別簡(jiǎn)單介紹

    這篇文章主要介紹了Java中&和&&的區(qū)別,&&邏輯與||邏輯或  它們都是邏輯運(yùn)算符,& 按位與|按位或它們都是位運(yùn)算符,更多詳細(xì)內(nèi)容請(qǐng)需要的小伙伴了解下面文章內(nèi)容
    2022-01-01
  • Java報(bào)錯(cuò):找不到或無法加載主類的解決辦法

    Java報(bào)錯(cuò):找不到或無法加載主類的解決辦法

    在Java中當(dāng)您嘗試運(yùn)行一個(gè)類作為主類時(shí),如果系統(tǒng)找不到該類或者無法加載該類,就會(huì)出現(xiàn)"找不到或無法加載主類"的錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于Java報(bào)錯(cuò):找不到或無法加載主類的解決辦法,需要的朋友可以參考下
    2024-12-12
  • Springboot讀取外部配置文件,項(xiàng)目部署時(shí)配置讀取不到問題及解決

    Springboot讀取外部配置文件,項(xiàng)目部署時(shí)配置讀取不到問題及解決

    這篇文章主要介紹了Springboot讀取外部配置文件,項(xiàng)目部署時(shí)配置讀取不到問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • SpringMvc接收參數(shù)方法總結(jié)(必看篇)

    SpringMvc接收參數(shù)方法總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄猄pringMvc接收參數(shù)方法總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • java如何使用zip壓縮實(shí)現(xiàn)讀取寫入

    java如何使用zip壓縮實(shí)現(xiàn)讀取寫入

    這篇文章主要為大家介紹了java如何使用zip壓縮實(shí)現(xiàn)讀取寫入示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論

乐陵市| 新郑市| 民县| 衡水市| 霞浦县| 齐齐哈尔市| 湘潭市| 云梦县| 黄石市| 开平市| 当雄县| 从江县| 九龙坡区| 苗栗县| 榕江县| 偃师市| 绍兴市| 绥宁县| 霍邱县| 新营市| 广宁县| 岳西县| 抚松县| 子长县| 邹城市| 九龙县| 准格尔旗| 海晏县| 海原县| 申扎县| 双辽市| 楚雄市| 公主岭市| 定结县| 吕梁市| 汝阳县| 彝良县| 永和县| 湖口县| 防城港市| 黔西|