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

mybatis-plus插入失敗的問題及解決

 更新時(shí)間:2023年11月03日 14:36:50   作者:Starry...  
這篇文章主要介紹了mybatis-plus插入失敗的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis-plus插入失敗

如果你也是這種錯(cuò)誤代碼

{
    "timestamp": "2023-07-29T09:23:17.218+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.wang.entity.Users' with value '1685219432365821953' Cause: java.lang.IllegalArgumentException: argument type mismatch",
    "path": "/api/insertUser"
}

那么估計(jì)也是這個(gè)問題,這是由于數(shù)據(jù)庫中的id設(shè)置為自增之后,調(diào)用接口是傳入的JSON數(shù)據(jù)不帶id或者id為null的時(shí)候,由于MyBatis的自動(dòng)映射機(jī)制,會(huì)嘗試把查詢結(jié)果中的每一列,映射到對(duì)應(yīng)的Java對(duì)象屬性中。

所以在插入完成后,MyBatis還會(huì)試圖把生成的id,映射設(shè)置到Users對(duì)象的id屬性中。

但因?yàn)槟銢]有傳id參數(shù),導(dǎo)致類型不匹配,從而報(bào)錯(cuò)。

解決方法

調(diào)用接口時(shí)id設(shè)置為0,或者在接口上設(shè)置user.setId(0);

Mybatis Plus插入數(shù)據(jù)事務(wù)控制常見異常、報(bào)錯(cuò)問題

報(bào)錯(cuò):

No value for key,Transaction is already completed,ResultSet is from UP

場(chǎng)景:

在手動(dòng)控制事務(wù)中,使用全局事務(wù)管理器對(duì)象,正常插入數(shù)據(jù)、或批量、或使用線程池開啟多線程批量插入數(shù)據(jù),都有可能出現(xiàn)以下錯(cuò)誤

錯(cuò)誤一

No value for key [xxx] bound to thread

解決:

1、由于手動(dòng)控制事務(wù)釋放資源時(shí),需要開啟一個(gè)統(tǒng)一管理的全局事務(wù)

2、此錯(cuò)誤是聲明式事務(wù)和手動(dòng)控制事務(wù)相沖突,如果在代碼中有涉及到手動(dòng)控制注入數(shù)據(jù)源事務(wù)管理Bean對(duì)象 DataSourceTransactionManager,如果出現(xiàn)上述問題,請(qǐng)開啟聲明事務(wù):

@Transactional(rollbackFor = {Exception.class})

3、如果方法內(nèi)部調(diào)用的保存或刪除方法也走Spring事務(wù)管理、或者內(nèi)部方法開啟的有新的事務(wù),那么內(nèi)部方法也要開啟聲明式事務(wù):@Transactional(rollbackFor = {Exception.class})

        sysUserAddressList.forEach(obj -> {
            synchronized (obj) {
                save(obj);
            }
        });

錯(cuò)誤二

ResultSet is from UPDATE. No Data

解決:

1、首先檢查SQL語法是否正確,保證SQL語句沒問題

2、有可能是同一時(shí)間進(jìn)入了多條SQL語句,再釋放結(jié)果集對(duì)象的時(shí)候沖突,需要考慮線程安全問題,在需要同步的代碼對(duì)象加上synchronized 同步鎖關(guān)鍵字,例如:

        sysUserAddressList.forEach(obj -> {
            synchronized (obj) {
                save(obj);
            }
        });

3、若是在JDBC工具類中將Connection,PreparedStatement或ResultSet定義成全局靜態(tài)變量,則要考慮線程安全問題

錯(cuò)誤三

Transaction is already completed - do not call commit or rollback more than once per transaction

解決:

1、手動(dòng)控制事務(wù),提示很明顯,已完成的事務(wù),不要多次提交或回滾

2、在提交或回滾事務(wù)之前,先判斷該事務(wù)狀態(tài)是否完成即可:

                transactionStatuses.forEach(status -> {
                    if (!status.isCompleted()) {
                        dataSourceTransactionManager.commit(status);
                    }
                });

總結(jié)

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

相關(guān)文章

  • mybatis主鍵自增,關(guān)聯(lián)查詢,動(dòng)態(tài)sql方式

    mybatis主鍵自增,關(guān)聯(lián)查詢,動(dòng)態(tài)sql方式

    這篇文章主要介紹了mybatis主鍵自增,關(guān)聯(lián)查詢,動(dòng)態(tài)sql方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • intellij idea旗艦版解決學(xué)生無法注冊(cè)問題詳解

    intellij idea旗艦版解決學(xué)生無法注冊(cè)問題詳解

    這篇文章主要介紹了intellij idea旗艦版解決學(xué)生無法注冊(cè)問題詳解,文中通過圖文示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java中Bean轉(zhuǎn)Map問題歸納總結(jié)

    Java中Bean轉(zhuǎn)Map問題歸納總結(jié)

    Java Bean轉(zhuǎn)Map的坑很多,最常見的就是類型丟失和屬性名解析錯(cuò)誤的問題,下面這篇文章主要給大家介紹了關(guān)于Java中Bean轉(zhuǎn)Map問題歸納總結(jié)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 詳細(xì)分析Java Lambda表達(dá)式

    詳細(xì)分析Java Lambda表達(dá)式

    這篇文章主要介紹了Java Lambda表達(dá)式的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Java 實(shí)戰(zhàn)項(xiàng)目之精品養(yǎng)老院管理系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目之精品養(yǎng)老院管理系統(tǒng)的實(shí)現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+mybatis+Vue+Mysql實(shí)現(xiàn)一個(gè)精品養(yǎng)老院管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Java使用跳轉(zhuǎn)結(jié)構(gòu)實(shí)現(xiàn)隊(duì)列和棧流程詳解

    Java使用跳轉(zhuǎn)結(jié)構(gòu)實(shí)現(xiàn)隊(duì)列和棧流程詳解

    這篇文章主要介紹了Java使用跳轉(zhuǎn)結(jié)構(gòu)實(shí)現(xiàn)隊(duì)列和棧流程,連續(xù)結(jié)構(gòu)和跳轉(zhuǎn)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)中常見的兩種基本數(shù)據(jù)結(jié)構(gòu),而我們本次的主角棧和隊(duì)列都 既可以使用使用跳轉(zhuǎn)結(jié)構(gòu)實(shí)現(xiàn)也可以使用連續(xù)結(jié)構(gòu)實(shí)現(xiàn)
    2023-04-04
  • Java 抽象類定義與方法實(shí)例詳解

    Java 抽象類定義與方法實(shí)例詳解

    這篇文章主要介紹了java 抽象類與接口的區(qū)別介紹的相關(guān)資料,需要的朋友可以參考下...
    2017-04-04
  • SpringBoot之導(dǎo)入靜態(tài)資源詳解

    SpringBoot之導(dǎo)入靜態(tài)資源詳解

    今天帶大家學(xué)習(xí)SpringBoot導(dǎo)入靜態(tài)資源的過程,文中介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot讀取yml文件中配置數(shù)組的2種方法

    SpringBoot讀取yml文件中配置數(shù)組的2種方法

    這篇文章主要介紹了SpringBoot讀取yml文件中配置數(shù)組的2種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 四個(gè)Java常見分布式鎖的選型和性能對(duì)比

    四個(gè)Java常見分布式鎖的選型和性能對(duì)比

    當(dāng)涉及到分布式系統(tǒng)中的并發(fā)控制和數(shù)據(jù)一致性時(shí),分布式鎖是一種常見的解決方案,本文將對(duì)幾種常見的分布式鎖實(shí)現(xiàn)原理、實(shí)現(xiàn)示例、應(yīng)用場(chǎng)景以及優(yōu)缺點(diǎn)進(jìn)行詳細(xì)分析,需要的可以參考一下
    2023-05-05

最新評(píng)論

慈利县| 福贡县| 达拉特旗| 赣州市| 乐清市| 资源县| 重庆市| 项城市| 罗田县| 洞头县| 璧山县| 南城县| 左贡县| 芮城县| 新邵县| 泰和县| 金秀| 河北省| 泌阳县| 神木县| 大同市| 温宿县| 金昌市| 石楼县| 延吉市| 井冈山市| 镇远县| 油尖旺区| 青冈县| 灵宝市| 涟源市| 龙门县| 萍乡市| 新邵县| 偏关县| 马尔康县| 南靖县| 上林县| 蕲春县| 沙河市| 阿拉尔市|