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

詳解MyBatis-Plus updateById方法更新不了空字符串/null解決方法

 更新時間:2020年09月01日 10:57:01   作者:璀璨英雄  
這篇文章主要介紹了詳解MyBatis-Plus updateById方法更新不了空字符串/null解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近遇到了Mybatis-Plus updateById(),更新某一個字段為null,卻發(fā)現(xiàn)沒有更新成功,發(fā)現(xiàn)有一個博客記錄挺好的。轉(zhuǎn)載過來,方便自己看。

一、簡介

因為最近在忙項目,好久都沒有更新博客,最近在項目中剛好遇到一個問題,就是在使用MyBatis-Plus updateById(xxx)的時候,居然更新不了字符串或者null,本文分享兩種解決方案,具體大家可以根據(jù)自己的需求選擇一種方法解決。

二、原理

在實際項目中,難免更新的時候,有可能會把已有的值更新成空字符串或者null,但是當(dāng)你使用updateById()方法的時候,會發(fā)現(xiàn)根本不生效。這其實是MyBatis-Plus對字段的驗證策略導(dǎo)致的,MyBatis-Plus默認(rèn)進行了不是全量更新的策略,查閱官網(wǎng)發(fā)現(xiàn)有一個屬性:因為筆者使用的是springboot,下面是mybatis-plus配置文件:

 mybatis-plus:
   global-config:
    #字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
    field-strategy: 1

這個字段驗證策略默認(rèn)是1, 即NOT NULL,更新的時候做了null判斷,默認(rèn)不更新為null的傳參。

field-strategy字段更新插入策略屬性說明:

  • IGNORED(0): "忽略判斷", 所有字段都更新和插入
  • NOT_NULL(1): "非 NULL 判斷", 只更新和插入非NULL值
  • NOT_EMPTY(2): "非空判斷", 只更新和插入非NULL值且非空字符串
  • DEFAULT:默認(rèn)NOT_NULL

field-strategy字段更新插入策略屬性說明:

  • IGNORED(0): "忽略判斷", 所有字段都更新和插入
  • NOT_NULL(1): "非 NULL 判斷", 只更新和插入非NULL值
  • NOT_EMPTY(2): "非空判斷", 只更新和插入非NULL值且非空字符串
  • DEFAULT:默認(rèn)NOT_NULL

三、解決方法

【第一種方法】:全局配置方式

在MyBatis-Plus配置文件中修改field-strategy字段驗證的值為0,即忽略判斷。

記住,光設(shè)置這個是不會進行判斷了,但是你會發(fā)現(xiàn)更新插入操作的時候還是會報錯,會報jdbcType不允許為空,這個時候,你需要確保你的PO對象(即@TableField(value="XSID")修飾字段的時候,還需要加入el屬性,每個屬性對應(yīng)數(shù)據(jù)庫的jdbcType類型,這樣才能成功更新空值或null。如下圖:

【第二種方法】:如果你設(shè)置的字段驗證策略為非null判斷

這個時候你會發(fā)現(xiàn)可以更新空字符串' ',但是一些比如Date等對象類型的設(shè)置空是要設(shè)置為null的,你會發(fā)現(xiàn)一樣更新不了null,

由于表中的字段基本上都是varchar字符類型的,所以這個時候可以在PO中對類型為對象類型的屬性通過注解對對象類型的屬性單獨設(shè)置字段驗證策略為IGNORED如下圖:

這樣就可以成功更新值為null或者空字符串' '了,問題解決。

四、總結(jié)

以上是筆者在實際項目中遇到mybatis-plus更新操作不生效的問題總結(jié)以及解決方案,讀者可以根據(jù)具體需求選擇適合自己的一種解決方法,希望能對大家有所幫助。

到此這篇關(guān)于詳解MyBatis-Plus updateById方法更新不了空字符串/null解決方法的文章就介紹到這了,更多相關(guān)MyBatis-Plus updateById空字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的Cglib動態(tài)代理詳細解讀

    Java中的Cglib動態(tài)代理詳細解讀

    這篇文章主要介紹了Java中的Cglib動態(tài)代理詳細解讀,CGLib是一個強大的、高性能、高質(zhì)量的 Code 生成類庫,它可以在運行期擴展 Java 類與實現(xiàn) Java 接口,需要的朋友可以參考下
    2023-11-11
  • Spring中@PathVariable注解的簡單使用

    Spring中@PathVariable注解的簡單使用

    這篇文章主要介紹了Spring中@PathVariable注解的簡單使用,@PathVariable 是 Spring Framework 中的注解之一,用于處理 RESTful Web 服務(wù)中的 URL 路徑參數(shù),它的作用是將 URL 中的路徑變量綁定到方法的參數(shù)上,需要的朋友可以參考下
    2024-01-01
  • SpringBoot項目使用內(nèi)置的單機任務(wù)調(diào)度功能詳解

    SpringBoot項目使用內(nèi)置的單機任務(wù)調(diào)度功能詳解

    這篇文章主要介紹了SpringBoot項目使用內(nèi)置的單機任務(wù)調(diào)度功能詳解,SpringBoot框架中提供了2個注解來讓開發(fā)者快速配置來實現(xiàn)單機定時任務(wù)調(diào)度的功能,分別是@EnableScheduling和 @Scheduled,需要的朋友可以參考下
    2024-01-01
  • Java中Scanner用法簡單示例

    Java中Scanner用法簡單示例

    這篇文章主要給大家介紹了關(guān)于Java中Scanner用法的相關(guān)資料,Scanner是Java中的一個類,用于讀取用戶的輸入,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Java的LinkedHashSet源碼深入講解

    Java的LinkedHashSet源碼深入講解

    這篇文章主要介紹了Java的LinkedHashSet源碼深入講解,LinkedHashSet是HashSet的子類,而由于HashSet實現(xiàn)了Set接口,因此LinkedHashSet也間接實現(xiàn)了Set類,LinkedHashSet類屬于java.base模塊,java.util包下,需要的朋友可以參考下
    2023-09-09
  • Java基于對象流實現(xiàn)銀行系統(tǒng)

    Java基于對象流實現(xiàn)銀行系統(tǒng)

    這篇文章主要為大家詳細介紹了Java基于對象流實現(xiàn)銀行系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 詳解SpringCloud-OpenFeign組件的使用

    詳解SpringCloud-OpenFeign組件的使用

    這篇文章主要介紹了SpringCloud-OpenFeign組件的使用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 深入講解Java 9中的九個新特性

    深入講解Java 9中的九個新特性

    Java 8 發(fā)布三年多之后,即將快到2017年7月下一個版本發(fā)布的日期了。 你可能已經(jīng)聽說過 Java 9 的模塊系統(tǒng),但是這個新版本還有許多其它的更新。 這里有九個令人興奮的新功能將與 Java 9 一起發(fā)布。需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-05-05
  • 使用springmvc運行流程分析,手寫spring框架嘗試

    使用springmvc運行流程分析,手寫spring框架嘗試

    這篇文章主要介紹了使用springmvc運行流程分析,手寫spring框架嘗試,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring超詳細講解IOC與解耦合

    Spring超詳細講解IOC與解耦合

    IoC就是比方說有一個類,我們想要調(diào)用類里面的方法(不是靜態(tài)方法),就要創(chuàng)建該類的對象,使用對象調(diào)用方法來實現(xiàn)。但對于Spring來說,Spring創(chuàng)建對象的過程,不是在代碼里面實現(xiàn)的,而是交給Spring來進行配置實現(xiàn)的
    2022-08-08

最新評論