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

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

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

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

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

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

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

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

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

注入配置 GlobalConfiguration 屬性 fieldStrategy

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

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

@TableField(strategy=FieldStrategy.NOT_EMPTY)

方法三:使用 UpdateWrapper

使用以下方法來進(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è)置字段為空不生效的問題了。

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

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

原因

通過sql查看發(fā)現(xiàn)null字段未在sql中執(zhí)行,經(jīng)過查閱發(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類型

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

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

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

如:

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

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

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

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

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

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

缺點(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)文章

  • 淺談java Properties類的使用基礎(chǔ)

    淺談java Properties類的使用基礎(chǔ)

    下面小編就為大家分享一篇淺談java Properties類的使用基礎(chǔ),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • EasyExcel自定義導(dǎo)出列和順序?qū)嵗a

    EasyExcel自定義導(dǎo)出列和順序?qū)嵗a

    這篇文章主要給大家介紹了關(guān)于EasyExcel自定義導(dǎo)出列和順序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 解決springboot的findOne方法沒有合適的參數(shù)使用問題

    解決springboot的findOne方法沒有合適的參數(shù)使用問題

    這篇文章主要介紹了解決springboot的findOne方法沒有合適的參數(shù)使用問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 基于@RequestParam name和value屬性的區(qū)別

    基于@RequestParam name和value屬性的區(qū)別

    這篇文章主要介紹了@RequestParam name和value屬性的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java字符串格式化工具String.format()完整用法指南

    Java字符串格式化工具String.format()完整用法指南

    String.format是Java中的一個(gè)靜態(tài)方法,用于創(chuàng)建格式化的字符串,這篇文章主要介紹了Java字符串格式化工具String.format()完整用法指南的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-01-01
  • Java結(jié)構(gòu)型設(shè)計(jì)模式之組合模式詳解

    Java結(jié)構(gòu)型設(shè)計(jì)模式之組合模式詳解

    組合模式,又叫部分整體模式,它創(chuàng)建了對(duì)象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下
    2022-09-09
  • SpringBoot集成Beetl后統(tǒng)一處理頁(yè)面異常的方法

    SpringBoot集成Beetl后統(tǒng)一處理頁(yè)面異常的方法

    這篇文章主要介紹了SpringBoot集成Beetl后統(tǒng)一處理頁(yè)面異常的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Fluent Mybatis快速入門詳細(xì)教程

    Fluent Mybatis快速入門詳細(xì)教程

    由于FluentMybatis是基于mybatis上做封裝和擴(kuò)展的,所以這里主要聊聊mybatis處理的方式,以及給出FluentMybatis的解放方案。對(duì)Fluent Mybatis入門相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-08-08
  • Java設(shè)計(jì)模式--代理模式

    Java設(shè)計(jì)模式--代理模式

    代理就是一個(gè)人或者一個(gè)機(jī)構(gòu)代表另一個(gè)人或者另一個(gè)機(jī)構(gòu)采取行動(dòng)。在一些情況下,一個(gè)客戶不想或者不能夠直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之前起到中介的作用
    2021-07-07
  • Java中的序列化和反序列化使用及解讀

    Java中的序列化和反序列化使用及解讀

    文章總結(jié)了Java中序列化和反序列化的概念,包括序列化的用途、實(shí)現(xiàn)方式和注意事項(xiàng),此外,還介紹了其他幾種常見的序列化框架,如JSON序列化、ProtocolBuffers和Kryo,并給出了最佳實(shí)踐和使用場(chǎng)景建議
    2026-02-02

最新評(píng)論

浮山县| 乾安县| 南川市| 博客| 射洪县| 鸡西市| 盐源县| 浠水县| 曲阜市| 临夏市| 潜江市| 普宁市| 垣曲县| 顺昌县| 且末县| 桦川县| 广河县| 中山市| 宾川县| 宁河县| 博客| 鄯善县| 多伦县| 枣强县| 镇赉县| 历史| 五寨县| 潼关县| 广西| 商南县| 旬邑县| 伊宁县| 伊金霍洛旗| 福泉市| 文安县| 新民市| 贵南县| 云南省| 昌江| 民乐县| 手游|