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

Mybatis-plus如何更新Null字段詳解

 更新時(shí)間:2023年07月13日 09:12:43   作者:剽悍一小兔  
MyBatis-plus在進(jìn)行更新操作時(shí)不會(huì)更新傳入實(shí)體中為null或默認(rèn)值屬性字段,只更新不為null的值、非默認(rèn)值的屬性字段,這篇文章主要給大家介紹了關(guān)于Mybatis-plus如何更新Null字段的相關(guān)資料,需要的朋友可以參考下

本文介紹【Mybatis-plus】updateById()方法不能更新字段為null的原因及解決辦法。

一、問(wèn)題描述

在日常項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)使用Mybatis-plus的updateById()方法,快速將接收道德參數(shù)或者查詢結(jié)果中原本不為null的字段更新為null,并且該字段在數(shù)據(jù)庫(kù)中可為null,這個(gè)時(shí)候使用updateById()并不能實(shí)現(xiàn)這個(gè)操作,不會(huì)報(bào)錯(cuò),但是對(duì)應(yīng)的字段并沒(méi)有更新為null。

二、問(wèn)題原因

Mybatis-plus的字段策略(FieldStrategy)有三種策略:

IGNORED:0 忽略

NOT_NULL:1 非 NULL,默認(rèn)策略

NOT_EMPTY:2 非空

而默認(rèn)的更新策略是NOT_NULL:非NULL; 即通過(guò)接口更新數(shù)據(jù)時(shí)數(shù)據(jù)為NULL值時(shí)將不更新進(jìn)數(shù)據(jù)庫(kù)。

三、解決方案

1.直接在mapper.xml中寫(xiě)sql:

 update table A set 字段a = null where 字段b = 條件

2.設(shè)置全局的FieldStrategy

在配置文件中修改全局策略

properties文件格式:

mybatis-plus.global-config.db-config.field-strategy=ignored
 
#yml文件格式:
mybatis-plus:
  global-config:
      #字段策略 0:"忽略判斷",1:"非 NULL 判斷",2:"非空判斷"
    field-strategy: 0

這樣做是進(jìn)行全局配置,在更新時(shí)會(huì)忽略對(duì)所有字段的判斷。但是如果一些字段沒(méi)有傳值過(guò)來(lái),會(huì)被直接更新為null,可能會(huì)影響其它業(yè)務(wù)數(shù)據(jù)的準(zhǔn)確性。不推薦使用此方法。

3.對(duì)指定的字段單獨(dú)設(shè)置field-strategy

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

@TableField(strategy=FieldStrategy.NOT_EMPTY)

這樣的話,我們只需要在需要更新為null的字段上,設(shè)置忽略策略,如下:

@TableField(updateStrategy = FieldStrategy.IGNORED)
private String updateBy;

設(shè)置好了之后,在更新時(shí)就可以直接使用mybatis-plus中的updateById方法就可以成功將字段更新為null,但是這樣做存在一定的弊端,就是當(dāng)需要這樣處理的字段比較多時(shí),要給對(duì)應(yīng)的字段都要添加上這樣的注解。

4.使用update方法結(jié)合UpdateWrapper方式更新

User user=userService.lambdaQuery().eq(User::getUserId,userId).one();
if(user!=null){
    userService.update(user,new UpdateWrapper<User>().lambda()
               .set(User::getUserName,null)
               .eq(User::getUserId,user.getUserId()));
}

這種方法不會(huì)影響其它方法,不需要修改全局配置,也不需要在字段上單獨(dú)加注解,只需要在使用的時(shí)候設(shè)置一下要修改的字段為null就可以更新成功,推薦使用方法4。

總結(jié)

到此這篇關(guān)于Mybatis-plus如何更新Null字段的文章就介紹到這了,更多相關(guān)Mybatis-plus更新Null字段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

松原市| 望奎县| 马鞍山市| 阿拉尔市| 定远县| 云安县| 旬邑县| 繁峙县| 吴江市| 财经| 宁波市| 怀柔区| 长白| 南皮县| 南华县| 吉安市| 科技| 叙永县| 柘荣县| 西贡区| 甘谷县| 沙湾县| 济南市| 久治县| 绵竹市| 石嘴山市| 开平市| 太仓市| 常德市| 山西省| 明光市| 宝丰县| 隆昌县| 鄯善县| 尼木县| 股票| 盐山县| 汪清县| 金山区| 东宁县| 大丰市|