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

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

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

一、起因

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

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

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

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

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

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

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

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

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

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

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

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

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

接下來(lái)重點(diǎn)又來(lái)了,對(duì)于如何配置javaType,網(wǎng)上的解決方案是自己寫sql語(yǔ)句,在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他也不會(huì)給我報(bào)上面的錯(cuò)誤。所以,任性,我就是不想寫SQL,那么,下面就是終極解決方案。

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

    /**
     * <p>
     * 當(dāng)該Field為類對(duì)象時(shí), 可使用#{對(duì)象.屬性}來(lái)映射到數(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' #注意:?jiǎn)我?hào)

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

總結(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ū)別及說(shuō)明

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

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

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

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

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

    下面小編就為大家?guī)?lái)一篇gson ajax 數(shù)字精度丟失問題的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    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é)合起來(lái),這篇文章給大家介紹springcloud之Feign超時(shí)提示Read timed out executing POST問題及解決方法,感興趣的朋友一起看看吧
    2024-01-01
  • idea如何自動(dòng)生成serialVersionUID

    idea如何自動(dòng)生成serialVersionUID

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

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

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

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

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

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

    這篇文章主要介紹了Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁(yè)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(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ù)庫(kù),其高性能和靈活性使其成為實(shí)時(shí)分析和日志處理的理想選擇,本文將介紹如何使用?Spring?Boot?和?MongoDB?實(shí)現(xiàn)實(shí)時(shí)分析和日志處理的功能
    2023-06-06

最新評(píng)論

鄄城县| 郑州市| 樟树市| 鲜城| 东山县| 三原县| 北碚区| 雷山县| 凤台县| 南京市| 盐亭县| 缙云县| 波密县| 西青区| 壤塘县| 东阿县| 尖扎县| 灵山县| 玉树县| 横山县| 阿坝县| 石楼县| 桂林市| 平山县| 临泉县| 广饶县| 新兴县| 敦煌市| 和硕县| 宿州市| 丹东市| 民县| 江孜县| 甘肃省| 凤台县| 万荣县| 分宜县| 海门市| 丽水市| 衢州市| 合水县|