溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mybatisPlus 中field-strategy配置失效如何解決

發(fā)布時間:2021-02-04 15:20:36 來源:億速云 閱讀:2291 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了mybatisPlus 中field-strategy配置失效如何解決,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

場景:

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

解決思路:

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

insertStrategy

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

默認值:NOT_NULL

字段驗證策略之 insert

說明:

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

#updateStrategy

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

默認值:NOT_NULL

字段驗證策略之 update

說明:

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

#selectStrategy(since 3.1.2)

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

默認值:NOT_NULL

字段驗證策略之 select

說明:

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

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

mybatisPlus中null值插入和更新問題

配置mybatisPlus的項目中,默認進行了不是全量更新的策略:NOT_NULL。

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

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

實際項目解決方法示例一

實際項目中,配置文件中配置全局字段策略為NOT_NULL。

mybatisPlus 中field-strategy配置失效如何解決

需求:實際項目中,apply_teacher字段當它為null時需要把null值更新進去。

困難:因為全局字段策略為NOT_NULL,所以默認不會更新null值進去。

解決方法:

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

代碼:

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

實際項目解決方法示例二

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

困難:因為全局字段策略為NOT_NULL,所以默認不會更新null值進去。

解決方法:

在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,
 /**
  * 默認的,一般只用于注解里
  * <p>1. 在全局里代表 NOT_NULL</p>
  * <p>2. 在注解里代表 跟隨全局</p>
  */
 DEFAULT
}

枚舉類字段簡介

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

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

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

DEFAULT: 默認的,一般只用于注解里。

上述內(nèi)容就是mybatisPlus 中field-strategy配置失效如何解決,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI