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

使用Mybatis-plus更新null字段的問題分析及解決過程

 更新時(shí)間:2026年05月08日 09:15:10   作者:十步殺一人_千里不留行  
文章主要講述了在使用MybatisPlus對Oracle數(shù)據(jù)庫的某個(gè)字段進(jìn)行set為Null操作時(shí)遇到的問題及解決方案,嘗試了全局配置和在字段上加注解等方法均未解決問題,最終通過在el表達(dá)式中指定javaType解決了問題

一、起因

業(yè)務(wù)需要對Oracle數(shù)據(jù)庫的某個(gè)字段進(jìn)行set為Null的操作。

網(wǎng)上找了很多帖子,不外乎那么幾種解決辦法,但都講的不完全對,而且對我的場景不適用,大白話就是沒用!

二、網(wǎng)上的解決方案,我這里不適用

1.全局配置:這種方案不考慮,因?yàn)橹挥羞@個(gè)表的這個(gè)字段需要更新為null,其他的表字段不需要更新null

2.在要更新為null的字段上加上注解 strategy = FieldStrategy.IGNORED。

這個(gè)值默認(rèn)是要進(jìn)行非空檢查的,來看源碼:

//字段策略枚舉類
public enum FieldStrategy {
    IGNORED(0, "忽略判斷"),
    NOT_NULL(1, "非 NULL 判斷"),
    NOT_EMPTY(2, "非空判斷");
    //省略部分代碼
}

我們要的效果是此處忽略非空檢查,所以應(yīng)該如下配置:

@TableField(value = "BIRTHDAY",strategy = FieldStrategy.IGNORED)
private Date birthday;

這里要說一句,其實(shí)全局配置也是更改這個(gè)默認(rèn)值,但你改了全局,你覺得行嗎?不行滴,小兄弟!??!

重點(diǎn)來了,網(wǎng)上的教程都是到這里就OK了,但不好意思,我的配置了之后依然報(bào)錯(cuò)。不行啊,大兄弟?。?!

三、真正的解決之道,完美

配置了上面的選項(xiàng)后,依然報(bào)錯(cuò),提示javaType的類型是other,看了一下源碼,果然javaType的默認(rèn)值是other。

接下來重點(diǎn)又來了,對于如何配置javaType,網(wǎng)上的解決方案是自己寫sql語句,在sql里面指定javaType,如下所示:

<insert id="save" parameterType="com.tarena.entity.Cost">
  insert into cost values(
      cost_seq.nextval,
      #{name,jdbcType=VARCHAR},
      #{base_duration,jdbcType=INTEGER},
      #{base_cost,jdbcType=DOUBLE}
  )
</insert>

這種方案我沒嘗試,應(yīng)該是可以的。但是,但是,但是,我們?yōu)槭裁匆肕ybatis Plus嗎,大家想想,不就是為了不寫SQL嗎,如果要寫SQL我還廢什么話,寫SQL他也不會給我報(bào)上面的錯(cuò)誤。所以,任性,我就是不想寫SQL,那么,下面就是終極解決方案。

Mybatis Plus支持通過el表達(dá)式指定javaType。先來看下源碼怎么說的,源碼里面說的很清楚了。

    /**
     * <p>
     * 當(dāng)該Field為類對象時(shí), 可使用#{對象.屬性}來映射到數(shù)據(jù)表.
     * </p>
     * <p>
     * 支持:@TableField(el = "role, jdbcType=BIGINT)<br>
     * 支持:@TableField(el = "role, typeHandler=com.baomidou.springcloud.typehandler.PhoneTypeHandler")
     * </p>
     */
    String el() default "";

還是不知道怎么用?

看最終的配置方式1

    /** 檢驗(yàn)結(jié)果單位(碼值:lab_result_unit)*/
	@TableField(value="lab_result_unit",strategy = FieldStrategy.IGNORED,el = "labResultUnit,jdbcType=DECIMAL")
	private Integer labResultUnit;

最終配置方式2

修改application.yml:

mybatis-plus:
  configuration:
    jdbc-type-for-null: 'null' #注意:單引號

網(wǎng)上很多文章都針對自己的場景能解決問題,但真的還是具體問題需要具體分析,最終才能找到適合自己問題的解決之道。

總結(jié)

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

相關(guān)文章

  • MyBatis Generator生成代碼及使用方式詳解

    MyBatis Generator生成代碼及使用方式詳解

    這篇文章主要介紹了MyBatis Generator生成代碼及使用方式的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 關(guān)于Synchronized和ReentranLock的區(qū)別及說明

    關(guān)于Synchronized和ReentranLock的區(qū)別及說明

    文章介紹了Java中的`synchronized`關(guān)鍵字和`ReentrantLock`類,兩者都可以用于解決多線程同步問題,但`ReentrantLock`提供了更多的功能和靈活性
    2024-12-12
  • SpringBoot啟動時(shí)如何修改上下文

    SpringBoot啟動時(shí)如何修改上下文

    本文介紹了如何在Spring Boot啟動時(shí)修改上下文,以便加載封裝JAR中的國際化文件,通過在resources目錄下的META-INF文件夾中的spring.factories文件中配置指定類,可以實(shí)現(xiàn)這一功能
    2024-11-11
  • gson ajax 數(shù)字精度丟失問題的解決方法

    gson ajax 數(shù)字精度丟失問題的解決方法

    下面小編就為大家?guī)硪黄猤son ajax 數(shù)字精度丟失問題的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • springcloud中Feign超時(shí)提示Read timed out executing POST的問題及解決方法

    springcloud中Feign超時(shí)提示Read timed out executing

    Feign接口調(diào)用分兩層,Ribbon的調(diào)用和Hystrix調(diào)用,理論上設(shè)置Ribbon的時(shí)間即可,但是Ribbon的超時(shí)時(shí)間和Hystrix的超時(shí)時(shí)間需要結(jié)合起來,這篇文章給大家介紹springcloud之Feign超時(shí)提示Read timed out executing POST問題及解決方法,感興趣的朋友一起看看吧
    2024-01-01
  • idea如何自動生成serialVersionUID

    idea如何自動生成serialVersionUID

    這篇文章主要介紹了idea如何自動生成serialVersionUID,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Spring Boot Starter中Bean 注冊與屬性綁定的兩大機(jī)制最佳實(shí)踐方案

    Spring Boot Starter中Bean 注冊與屬性綁定的兩大機(jī)制最佳實(shí)踐方案

    在 Spring Boot的世界里,Starter(啟動器)是簡化依賴管理和自動化配置的強(qiáng)大工具,本文將深入探討 Spring Boot Starter 中 Bean 初始化的核心機(jī)制,并指出最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • SpringBoot 中html的頁面間跳轉(zhuǎn)問題小結(jié)

    SpringBoot 中html的頁面間跳轉(zhuǎn)問題小結(jié)

    這篇文章主要介紹了SpringBoot 中html的頁面間跳轉(zhuǎn)問題小結(jié),本文給大家分享兩種方法,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁)

    Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁)

    這篇文章主要介紹了Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 基于SpringBoot和MongoDB實(shí)現(xiàn)實(shí)時(shí)分析和日志處理功能

    基于SpringBoot和MongoDB實(shí)現(xiàn)實(shí)時(shí)分析和日志處理功能

    實(shí)時(shí)分析和日志處理在現(xiàn)代應(yīng)用程序開發(fā)中扮演著重要的角色,MongoDB是一個(gè)非常流行的NoSQL數(shù)據(jù)庫,其高性能和靈活性使其成為實(shí)時(shí)分析和日志處理的理想選擇,本文將介紹如何使用?Spring?Boot?和?MongoDB?實(shí)現(xiàn)實(shí)時(shí)分析和日志處理的功能
    2023-06-06

最新評論

秦皇岛市| 乐至县| 偏关县| 镇康县| 吉林市| 浏阳市| 岳西县| 怀宁县| 本溪市| 北票市| 高阳县| 榆树市| 余江县| 山丹县| 星子县| 梁平县| 清原| 额济纳旗| 滦南县| 上犹县| 闸北区| 南康市| 溆浦县| 石屏县| 曲靖市| 丘北县| 绥棱县| 鄂托克旗| 武川县| 额敏县| 五指山市| 城市| 江永县| 岢岚县| 安远县| 鹿泉市| 华坪县| 长治市| 闽清县| 林口县| 临猗县|