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

關(guān)于Mybatis-plus設(shè)置字段為空的正確寫(xiě)法

 更新時(shí)間:2023年07月15日 09:02:09   作者:sWX375883  
這篇文章主要介紹了關(guān)于Mybatis-plus設(shè)置字段為空的正確寫(xiě)法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mybatis-plus設(shè)置字段為空的寫(xiě)法

使用Mybatis-plus在進(jìn)行字段更新操作設(shè)置字段值為null,使用如下的操作語(yǔ)句:

LambdaUpdateWrapper<Entity> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(Entity::getField,null);
wrapper.eq(Entity::getId,1);

發(fā)現(xiàn)打印出來(lái)的sql只有更新條件,沒(méi)有field=null,導(dǎo)致更新報(bào)錯(cuò)。

這是為什么呢?這是因?yàn)镸ybatis-plus在更新的時(shí)候做了null判斷,默認(rèn)不更新為null的傳參字段,但業(yè)務(wù)如此,我們應(yīng)該怎么寫(xiě)呢?

方法一:調(diào)整全局的驗(yàn)證策略

注入配置 GlobalConfiguration 屬性 fieldStrategy

方法二:調(diào)整字段驗(yàn)證注解

根據(jù)具體情況,在需要更新的字段中調(diào)整驗(yàn)證注解,如驗(yàn)證非空:

@TableField(strategy=FieldStrategy.NOT_EMPTY)

方法三:使用 UpdateWrapper

使用以下方法來(lái)進(jìn)行更新操作:

例1.

?? ?this.mapper.update(null,
? ? ? ? ? ? ? ? Wrappers.<Entity>lambdaUpdate()
? ? ? ? ? ? ? ? .set(Entity::getField, null)
? ? ? ? ? ? ? ? .eq(Entity::getId, id));

例2.

?? ?UpdateWrapper<Entity> updateWrapper = new UpdateWrapper<>();
?? ?updateWrapper.set("field", null);
?? ?updateWrapper.eq("id", 2)
?? ?this.update(updateWrapper);

這樣我們就很容易的處理了使用Mybatis-plus設(shè)置字段為空不生效的問(wèn)題了。

MyBatis-Plus更新字段為null 不生效

在使用mybatis-plus時(shí),發(fā)現(xiàn)當(dāng)前端傳入的值為null值時(shí),結(jié)果無(wú)論怎么操作后端都不執(zhí)行更新null字段的操作,數(shù)據(jù)庫(kù)中的需要被更新為null的字段沒(méi)有被更新。

原因

通過(guò)sql查看發(fā)現(xiàn)null字段未在sql中執(zhí)行,經(jīng)過(guò)查閱發(fā)現(xiàn)mybaits-plus在更新時(shí)排除了null字段

MyBatis-Plus對(duì)字段的驗(yàn)證策略導(dǎo)致的,MyBatis-Plus默認(rèn)進(jìn)?了不是全量更新的策略,默認(rèn)忽略為null 的字段的

解決辦法

1.如果要更新的字段是String類(lèi)型

可以把前端傳入的null改為空字符串(“”),這樣mybati-plus就不會(huì)忽略更新該字段

2.使用mybatis-plus的字段注入

在可能為空的Model類(lèi)字段上方加@TableField(fill = FieldFill.INSERT_UPDATE),問(wèn)題解決。

如:

/**
 * 介紹說(shuō)明(非必填)
 */
@TableField(fill = FieldFill.UPDATE)
private String explanation;

共有四種可選,默認(rèn)不處理

3.修改MyBatis-Plus 全局默認(rèn)策略

缺點(diǎn):這樣做會(huì)對(duì)所有的字段都忽略判斷,如果一些字段不想要修改,但是傳值的時(shí)候沒(méi)有傳遞過(guò)來(lái),就會(huì)被更新為null

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

4.修改實(shí)體類(lèi)注解,改變字段的忽略判斷

缺點(diǎn):需要注意數(shù)據(jù)庫(kù)字段是否設(shè)置為 非null ,如果為非null 也更新不成功

@TableField( updateStrategy = FieldStrategy.IGNORED)
private Date settleTime;
( updateStrategy = FieldStrategy.IGNORED)
private Date settleTime;

總結(jié)

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

相關(guān)文章

  • 關(guān)于Java中常見(jiàn)的負(fù)載均衡算法

    關(guān)于Java中常見(jiàn)的負(fù)載均衡算法

    這篇文章主要介紹了關(guān)于Java中常見(jiàn)的負(fù)載均衡算法,負(fù)載平衡是一種電子計(jì)算機(jī)技術(shù),用來(lái)在多個(gè)計(jì)算機(jī)、網(wǎng)絡(luò)連接、CPU、磁盤(pán)驅(qū)動(dòng)器或其他資源中分配負(fù)載,以達(dá)到優(yōu)化資源使用、最大化吞吐率、最小化響應(yīng)時(shí)間、同時(shí)避免過(guò)載的目的,需要的朋友可以參考下
    2023-08-08
  • MyBatis的通俗理解:SqlSession.getMapper()源碼解讀

    MyBatis的通俗理解:SqlSession.getMapper()源碼解讀

    這篇文章主要介紹了MyBatis的通俗理解:SqlSession.getMapper()源碼解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • SpringBoot JWT令牌的使用

    SpringBoot JWT令牌的使用

    JWT令牌中包含了一個(gè)用戶(hù)名和哈希值,這些都需要進(jìn)行驗(yàn)證,本文主要介紹了SpringBoot JWT令牌的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Struts2實(shí)現(xiàn)上傳單個(gè)文件功能

    Struts2實(shí)現(xiàn)上傳單個(gè)文件功能

    這篇文章主要為大家詳細(xì)介紹了Struts2實(shí)現(xiàn)上傳單個(gè)文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Springboot整合quartz產(chǎn)生錯(cuò)誤及解決方案

    Springboot整合quartz產(chǎn)生錯(cuò)誤及解決方案

    這篇文章主要介紹了Springboot整合quartz產(chǎn)生錯(cuò)誤及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 在Java中為日期增加一天的多種方法

    在Java中為日期增加一天的多種方法

    這篇文章主要給大家介紹了關(guān)于如何在Java中為日期增加一天的多種方法,在JAVA業(yè)務(wù)代碼中,經(jīng)常會(huì)遇到通過(guò)指定時(shí)間,增加指定天數(shù)的業(yè)務(wù)需求,需要的朋友可以參考下
    2023-07-07
  • SpringBoot實(shí)現(xiàn)攔截器、過(guò)濾器、監(jiān)聽(tīng)器過(guò)程解析

    SpringBoot實(shí)現(xiàn)攔截器、過(guò)濾器、監(jiān)聽(tīng)器過(guò)程解析

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)攔截器、過(guò)濾器、監(jiān)聽(tīng)器過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java基礎(chǔ)之不簡(jiǎn)單的數(shù)組

    Java基礎(chǔ)之不簡(jiǎn)單的數(shù)組

    數(shù)組(Array)是有序的元素序列。 若將有限個(gè)類(lèi)型相同的變量的集合命名,那么這個(gè)名稱(chēng)為數(shù)組名。組成數(shù)組的各個(gè)變量稱(chēng)為數(shù)組的分量,也稱(chēng)為數(shù)組的元素,有時(shí)也稱(chēng)為下標(biāo)變量
    2021-09-09
  • springboot項(xiàng)目部署在linux上運(yùn)行的兩種方式小結(jié)

    springboot項(xiàng)目部署在linux上運(yùn)行的兩種方式小結(jié)

    這篇文章主要介紹了springboot項(xiàng)目部署在linux上運(yùn)行的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 手把手教你如何在idea中搭建SpringBoot項(xiàng)目

    手把手教你如何在idea中搭建SpringBoot項(xiàng)目

    這篇文章主要介紹了如何搭建一個(gè)SpringBoot項(xiàng)目,包括環(huán)境準(zhǔn)備、創(chuàng)建新項(xiàng)目、探索項(xiàng)目結(jié)構(gòu)以及展望未來(lái),通過(guò)詳細(xì)的步驟和實(shí)用的技巧,幫助開(kāi)發(fā)者快速上手SpringBoot開(kāi)發(fā),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02

最新評(píng)論