亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mybatis-Plus的saveOrUpdateBatch(null)問題及解決

 更新時間:2023年07月14日 16:09:15   作者:長安有故里y  
這篇文章主要介紹了Mybatis-Plus的saveOrUpdateBatch(null)問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Mybatis-Plus的saveOrUpdateBatch(null)問題

Mybatis-Plus的saveOrUpdateBatch對象屬性為空(null)不更新的問題

saveOrUpdateBatch對象屬性為空(null)不更新的問題

在屬性上假如注解即可updateStrategy = FieldStrategy.IGNORED

就是為null的時候也更新字段值

? @ApiModelProperty(value = "固定電話")
? ? @TableField(value = "FIXED_TELEPHONE",updateStrategy = FieldStrategy.IGNORED)
? ? private String fixedTelephone;

mybatis-plus的saveOrUpdate問題

項目場景

在使用mybatis-plus的時候傳入的數(shù)據(jù)id不為空的時候

問題描述

出現(xiàn)問題是一直是新增而不是修改

service.savaOrUpdate(User user);

這里的User是實體類

含有屬性   id 主鍵、name 姓名

原因分析

這里我先說明一下saveOrUpdate()的底層原理是:

先進行查詢 如果這個id為空 -----就新增

如果有id的話就會通過這個id先進行查詢 如果查到數(shù)據(jù)就進行修改,如果沒有查到數(shù)據(jù)就進行新增

現(xiàn)在讓我們看一下它的源碼:

 public boolean saveOrUpdate(T entity) {
        if (null == entity) {
            return false;
        } else {
            TableInfo tableInfo = TableInfoHelper.getTableInfo(this.entityClass);
            Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!", new Object[0]);
            String keyProperty = tableInfo.getKeyProperty();
            Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!", new Object[0]);
            Object idVal = tableInfo.getPropertyValue(entity, tableInfo.getKeyProperty());
            return !StringUtils.checkValNull(idVal) && !Objects.isNull(this.getById((Serializable)idVal)) ? this.updateById(entity) : this.save(entity);
        }
    }

核心代碼是最后的一句

!StringUtils.checkValNull(idVal) && !Objects.isNull(this.getById((Serializable)idVal)) ? this.updateById(entity) : this.save(entity);
  • 首先第一個
!StringUtils.checkValNull(idVal)

這一句是idVal是id值

checkValNull 點進去 

 

這句代表的是id是否為空  如果為空的話就 最后結(jié)果就是真 (因為有!)

  • 第二個
!Objects.isNull(this.getById((Serializable)idVal))

this.getById((Serializable)idVal)這個方法是

是通過id進行查詢是否有id的這個數(shù)據(jù)  如果有的話就就是真 

這樣兩個條件都成立 ---也就是id不為空,id這個數(shù)據(jù)存在的話 ---就進行修改

否則就是新增

這就是saveOrUpdate的底層原理

 敲黑板  我出現(xiàn)的問題

這個方法的selectById()

我的情況是我在mapper中自己寫了一個方法名字跟這個一樣。

因為mapper是繼承了BaseMapper這個類,調(diào)用的時候子類有方法就調(diào)用了子類的方法

因此我的情況是變成了有id也變成了新增

最后總結(jié) ?。?!非常重要的是 我們自己mapper中定義的方法一定不要跟mybatisplus的中方法名一樣,防止出現(xiàn)這種錯誤

這也是我代碼規(guī)范沒有寫好,大家寫的時候一定要按照阿里的開發(fā)規(guī)約進行開發(fā),取名要正規(guī) 

最后

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

相關(guān)文章

  • IDEA 2020代碼提示忽略大小寫的問題

    IDEA 2020代碼提示忽略大小寫的問題

    這篇文章主要介紹了IDEA 2020代碼提示忽略大小寫的問題,本文通過圖文并茂的形式給大家分享解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot整合EasyExcel進行大數(shù)據(jù)處理的方法詳解

    SpringBoot整合EasyExcel進行大數(shù)據(jù)處理的方法詳解

    EasyExcel是一個基于Java的簡單、省內(nèi)存的讀寫Excel的開源項目。在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M的Excel。本文將在SpringBoot中整合EasyExcel進行大數(shù)據(jù)處理,感興趣的可以了解一下
    2022-05-05
  • SpringBoot入門系列之JPA mysql

    SpringBoot入門系列之JPA mysql

    這篇文章主要介紹了SpringBoot入門系列之JPA mysql的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Spring MVC處理方法返回值過程解析

    Spring MVC處理方法返回值過程解析

    這篇文章主要介紹了Spring MVC處理方法返回值過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 使用ScheduledThreadPoolExecutor踩過最痛的坑

    使用ScheduledThreadPoolExecutor踩過最痛的坑

    這篇文章主要介紹了使用ScheduledThreadPoolExecutor踩過最痛的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringBoot日期格式轉(zhuǎn)換之配置全局日期格式轉(zhuǎn)換器的實例詳解

    SpringBoot日期格式轉(zhuǎn)換之配置全局日期格式轉(zhuǎn)換器的實例詳解

    這篇文章主要介紹了SpringBoot日期格式轉(zhuǎn)換之配置全局日期格式轉(zhuǎn)換器的實例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java中空指針異常該如何避免詳解

    Java中空指針異常該如何避免詳解

    空指針(Null Pointer Exception,NPE)是Java中最常見不過的異常了,其原因雖然顯而易見,但是開發(fā)人員往往會忽略,或未能及時采取措施,下面這篇文章主要給大家介紹了關(guān)于Java中空指針異常該如何避免的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Spring通過三級緩存解決循環(huán)依賴問題的過程詳解

    Spring通過三級緩存解決循環(huán)依賴問題的過程詳解

    循環(huán)依賴指的是在對象之間存在相互依賴關(guān)系,形成一個閉環(huán),導(dǎo)致無法準確地完成對象的創(chuàng)建和初始化,本文主要介紹了Spring通過三級緩存解決循環(huán)依賴的方法,需要的可以參考下
    2023-10-10
  • Java實現(xiàn)注冊登錄與郵箱發(fā)送賬號驗證激活功能

    Java實現(xiàn)注冊登錄與郵箱發(fā)送賬號驗證激活功能

    這篇文章主要介紹了Java實現(xiàn)注冊登錄與郵箱發(fā)送賬號驗證激活功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • 使用dom4j解析xml文件問題

    使用dom4j解析xml文件問題

    這篇文章主要介紹了使用dom4j解析xml文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論