国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mybatis-plus更新字段為null

這篇具有很好參考價值的文章主要介紹了Mybatis-plus更新字段為null。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

更新時,把某些字段的值更新為null,但是目前mybatis-plus的update/updateById會忽略實體類中為null的字段,導(dǎo)致這些字段沒有更新還是原來的值。

網(wǎng)上比較常用的有兩種:

1、在實體類的屬性上增加注解:@TableField(updateStrategy = FieldStrategy.IGNORED)

    /**
     * 手機(jī)號
     **/
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String phone;

缺點:當(dāng)在其它接口更新別的字段時,本來沒有想更新這個字段,但是也會把這個字段更新為null。

2、使用LambdaUpdateWrapper的set更新

	 // set更新
	 LambdaUpdateWrapper<UserEntity> updateWrapper = Wrappers.lambdaUpdate();
	 updateWrapper.set(UserEntity::getPhone, null);
	 updateWrapper.eq(UserEntity::getUserId, "0001");
	 userMapper.update(null, updateWrapper);

缺點:需要一個一個屬性set,比較麻煩。我平常使用的都是從DTO直接copy到Entity里面,要是updateWrapper.set的話比較繁瑣,而且有的值為null時不更新。

優(yōu)化:

還是使用LambdaUpdateWrapper的set更新,方法update(entity, updateWrapper)當(dāng)?shù)谝粋€參數(shù)實體類entity不為null時,其中entity中為null的屬性不會更新,不為null的會更新, updateWrapper.set()是不論是否為null都更新。
既可以攜程:

	 LambdaUpdateWrapper<UserEntity> updateWrapper = Wrappers.lambdaUpdate();
	 if (StringUtils.isEmpty(phone)) {
	 		// 這個值為null,才set,不然sql里面會兩次賦值,執(zhí)行sql時報錯
	 		updateWrapper.set(UserEntity::getPhone, null);
	 }
	 updateWrapper.eq(UserEntity::getUserId, "0001");
	 UserEntity entity = new UserEntity();
	 entity.setName("張三");
	 entity.setAge(null);
	 userMapper.update(null, updateWrapper);

說明:根據(jù)userId更新,name為張三,phone為null,而age不更新。
SQL:

update user set name = '張三', phone = null where user_id = '0001'

結(jié)論:使用update(entity, updateWrapper)更新

屬性為null不更新,使用entity保存;若屬性為null時更新表中字段為null,則用updateWrapper.set()保存數(shù)據(jù),set前需要判斷這個屬性的值為null。文章來源地址http://www.zghlxwxcb.cn/news/detail-461151.html

到了這里,關(guān)于Mybatis-plus更新字段為null的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Mybatis-Plus不能更新對象字段為空值問題解決

    Mybatis-Plus不能更新對象字段為空值問題解決

    問題描述: 在使用Mybatis-Plus調(diào)用updateById方法進(jìn)行數(shù)據(jù)更新默認(rèn)情況下是不能更新空值字段的,而在實際開發(fā)過程中,往往會遇到需要將字段值更新為空值的情況,該如何解決呢? 原因分析: Mybatis-Plus中字段的更新策略是通過FieldStrategy屬性控制的。在實體字段上,如果不通

    2024年02月12日
    瀏覽(20)
  • 【Mybatis-Plus】mybatisplus更新時,實體字段為空,數(shù)據(jù)庫不更新的解決方案

    項目技術(shù)棧:jdk (1.8) + spring boot (2.1.0) + mybatis-plus (3.5.1) 數(shù)據(jù)庫: MySQL 字段類型:varchar 和 Integer 從前端傳過來的數(shù)據(jù)實體字段, convertType 和 step 設(shè)為null時,使用mybatis-plus 的 updateById方法往數(shù)據(jù)庫中更新時,這兩個字段不更新,數(shù)據(jù)不為空可以插入。 mybatis-plus在更新的時候做

    2024年01月16日
    瀏覽(26)
  • 【Mybatis-plus】updateById()方法不能更新字段為null的原因及解決辦法

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

    2024年02月02日
    瀏覽(17)
  • mybatis-plus 根據(jù)指定字段 批量 刪除/修改

    mybatis-plus 根據(jù)指定字段 批量 刪除/修改

    mybatis-plus 提供了根據(jù)id批量更新和修改的方法,這個大家都不陌生 但是當(dāng)表沒有id的時候怎么辦) 這個就不說了,就是因為不想手寫SQL 所以才有這篇博客 mybatis plus 的 executeBatch 參考 mybatis plus 的updateBatchById 方法. 調(diào)用處: 接口 重寫方法 實現(xiàn) 這種寫法其實批量的效率還是比較慢的

    2024年02月13日
    瀏覽(17)
  • MyBatis-Plus如何將字段修改為空值

    不推薦使用原因:作用范圍太廣,調(diào)用MyBatis-Plus封裝的update會不經(jīng)意將字段改為空 不推薦使用原因:相對于方案一作用范圍相對較小,但調(diào)用MyBatis-Plus封裝的update也會不經(jīng)意將字段改為空 推薦原因:不影響任何地方只在此處生效

    2024年02月16日
    瀏覽(15)
  • Mybatis-Plus處理Mysql Json類型字段

    Mybatis-Plus處理Mysql Json類型字段

    Mysql 5.7.8開始支持Json對象和Json數(shù)組,但在Mysql 8版本中使用Json性能更佳。 使用Json格式的好處: 無須預(yù)定義字段:字段可以無限拓展,避免了ALTER ADD COLUMN的操作,使用更加靈活。 處理稀疏字段:避免了稀疏字段的NULL值,避免冗余存儲。 支持索引:相比于字符串格式的JSON,

    2024年02月03日
    瀏覽(28)
  • mybatis-plus 數(shù)據(jù)字段進(jìn)行加解密入庫,且加密字段支持模糊搜索

    mybatis-plus 數(shù)據(jù)字段進(jìn)行加解密入庫,且加密字段支持模糊搜索

    1. 開發(fā)框架、環(huán)境 springboot+mybatis-plus+mysql5.7(oracle應(yīng)該也是可以的,沒有測試,但實現(xiàn)思路是都可以滿足,懶得測oracle了,哈哈) 2. 需求介紹(背景) 需求很簡單: 就是將數(shù)據(jù)存儲到數(shù)據(jù)庫,并且將敏感數(shù)據(jù)字段進(jìn)行加密處理保存(比如:身份證,手機(jī)號,銀行卡 等等)

    2024年02月09日
    瀏覽(17)
  • Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper

    Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper

    首先根據(jù)咱們返回前端的數(shù)據(jù)列來規(guī)劃好排序字段 如下: 這里的字段為返回VO的字段,要轉(zhuǎn)換成數(shù)據(jù)庫字段然后加入到排序中 示例,穿了 surname,cerRank 多字段,然后是倒序 false 首先創(chuàng)建好映射,如下代碼,第一個List 為前端字段VO, 第二個List 為數(shù)據(jù)庫字段。Util.handle 是將兩個轉(zhuǎn)換

    2024年02月14日
    瀏覽(18)
  • SpringBoot - MyBatis-Plus - 如何在查詢時排除某些字段?

    寫在前面 查詢時部分字段不想給前端顯示,怎么辦? (1)使用SELECT方法,排除字段\\\"password\\\" (2)使用SELECT方法,只顯示某些字段 (3)使用@TableField(exist = false),排除某些字段 注:表示當(dāng)前屬性不是數(shù)據(jù)庫的字段,但在項目中必須使用,這樣的話在新增/查詢等使用BEAN時,

    2024年02月12日
    瀏覽(16)
  • Mybatis-Plus批量更新原理

    Mybatis-Plus批量更新原理

    IService的updateBatchById方法 默認(rèn)batchSize = 1000 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl#updateBatchById 構(gòu)建了一個回調(diào),進(jìn)入executeBatch方法 在這個方法基本就能看出來了,執(zhí)行1000次方法后執(zhí)行一次flushStatements,也就是說理論上是積累了1000個更新sql,才進(jìn)行一次數(shù)據(jù)庫更新 使用

    2024年02月05日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包