欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis-plus插入失敗的問(wèn)題及解決

 更新時(shí)間:2023年11月03日 14:36:50   作者:Starry...  
這篇文章主要介紹了mybatis-plus插入失敗的問(wèn)題及解決方案,具有很好的參考價(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è)問(wèn)題,這是由于數(shù)據(jù)庫(kù)中的id設(shè)置為自增之后,調(diào)用接口是傳入的JSON數(shù)據(jù)不帶id或者id為null的時(shí)候,由于MyBatis的自動(dòng)映射機(jī)制,會(huì)嘗試把查詢(xún)結(jié)果中的每一列,映射到對(duì)應(yīng)的Java對(duì)象屬性中。

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

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

解決方法

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

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

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

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

場(chǎng)景:

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

錯(cuò)誤一

No value for key [xxx] bound to thread

解決:

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

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

@Transactional(rollbackFor = {Exception.class})

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

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

錯(cuò)誤二

ResultSet is from UPDATE. No Data

解決:

1、首先檢查SQL語(yǔ)法是否正確,保證SQL語(yǔ)句沒(méi)問(wèn)題

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

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

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

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

  • 詳解Java的Struts框架中注釋的用法

    詳解Java的Struts框架中注釋的用法

    這篇文章主要介紹了詳解Java的Struts框架中注釋的用法,Struts是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • SpringCloud實(shí)戰(zhàn)之Feign聲明式服務(wù)調(diào)用

    SpringCloud實(shí)戰(zhàn)之Feign聲明式服務(wù)調(diào)用

    這篇文章主要介紹了SpringCloud實(shí)戰(zhàn)之Feign聲明式服務(wù)調(diào)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 解決Java壓縮zip異常java.util.zip.ZipException:duplicate entry:問(wèn)題

    解決Java壓縮zip異常java.util.zip.ZipException:duplicate entry

    這篇文章主要介紹了解決Java壓縮zip異常java.util.zip.ZipException:duplicate entry:問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java實(shí)現(xiàn)簡(jiǎn)單的ATM項(xiàng)目

    java實(shí)現(xiàn)簡(jiǎn)單的ATM項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的ATM項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • java多態(tài)中的就近原則介紹

    java多態(tài)中的就近原則介紹

    大家好,本篇文章主要講的是java多態(tài)中的就近原則介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • 解決Intellij IDEA 使用Spring-boot-devTools無(wú)效的問(wèn)題

    解決Intellij IDEA 使用Spring-boot-devTools無(wú)效的問(wèn)題

    下面小編就為大家?guī)?lái)一篇解決Intellij IDEA 使用Spring-boot-devTools無(wú)效的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 使用springboot訪(fǎng)問(wèn)圖片本地路徑并映射成url

    使用springboot訪(fǎng)問(wèn)圖片本地路徑并映射成url

    這篇文章主要介紹了使用springboot訪(fǎng)問(wèn)圖片本地路徑并映射成url的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺談Java中@Autowired和@Inject注解的區(qū)別和使用場(chǎng)景

    淺談Java中@Autowired和@Inject注解的區(qū)別和使用場(chǎng)景

    本文主要介紹了淺談Java中@Autowired和@Inject注解的區(qū)別和使用場(chǎng)景,@Autowired注解在依賴(lài)查找方式和注入方式上更加靈活,適用于Spring框架中的依賴(lài)注入,而@Inject注解在依賴(lài)查找方式上更加嚴(yán)格,適用于Java的依賴(lài)注入標(biāo)準(zhǔn),感興趣的可以了解一下
    2023-11-11
  • 詳解mybatis #{}和${}的區(qū)別、傳參、基本語(yǔ)法

    詳解mybatis #{}和${}的區(qū)別、傳參、基本語(yǔ)法

    這篇文章主要介紹了mybatis #{}和${}的區(qū)別、傳參、基本語(yǔ)法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java Kafka實(shí)現(xiàn)延遲隊(duì)列的示例代碼

    Java Kafka實(shí)現(xiàn)延遲隊(duì)列的示例代碼

    kafka作為一個(gè)使用廣泛的消息隊(duì)列,很多人都不會(huì)陌生。本文將利用Kafka實(shí)現(xiàn)延遲隊(duì)列,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-08-08

最新評(píng)論