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

mybatis 事務(wù)回滾配置操作

 更新時間:2021年02月23日 11:12:27   作者:xmaaaa  
這篇文章主要介紹了mybatis 事務(wù)回滾配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在mybatis進行批量操作的時候,插入多條數(shù)據(jù)時,設(shè)置回滾但是前面幾條還是插入,經(jīng)過嘗試

問題所在:

官網(wǎng)api上openSession(false)就可以回滾了,但是用session.getConnection().getAutoCommit()查看還是true

解決方法:

將DataSource配置改為AutoCommit(false)

將conn設(shè)置setAutoCommit(false),用conn進行提交,回滾操作

例子:

SqlSession session = sqlSessionFactory.openSession(false);
  Connection conn = session.getConnection();
  conn.setAutoCommit(false);
  try {
   UserMapper mapper = session.getMapper(UserMapper.class);
   for (String name : names) {
     //各種操作
    User user = new User();
    user.setName(name);
    //插入,需要回滾
    mapper.insert(user);
   }
   conn.commit();
  } catch (Exception e) {
   //有重復(fù)回滾
   conn.rollback();
   throw e;
  } finally {
   session.close();
  }

補充:Spring Boot + Mybatis Plus手動觸發(fā)事務(wù)回滾

使用第一種方法(省略了操作數(shù)據(jù)庫的代碼)操作Mybatis Plus的事務(wù),若出現(xiàn)異常進入catch之后,不會執(zhí)行數(shù)據(jù)庫操作的回滾,反而會報No transaction aspect-managed TransactionStatus in scope的錯誤,修改為第二種可以正常進行事務(wù)管理和回滾

看到一個關(guān)于此情況的解釋:

@Transactional 必須觸發(fā)aop代理才能生效,故非public方法,不執(zhí)行事務(wù),public方法在本類中被引用,也不執(zhí)行事務(wù)

第一種方法:

@PostMapping("/save1")
public boolean action01() {
 return action00(); 
}
 
@PostMapping("/save2")
public boolean action02() {
 return action00(); 
}
 
@Transactional
private boolean action00() {
 String result = true;
 try {
  System.out.println(1/0);
 } catch (Exception e) {
  TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  result = false;
 }
 return result;
}

​ 第二種方法:

@PostMapping("/save1")
@Transactional
public boolean action01() {
 boolean result = action00();
 if (!result){
  TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 }
 return result; 
}
 
@PostMapping("/save2")
@Transactional
public boolean action02() {
 boolean result = action00();
 if (!result){
  TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 }
 return result; 
} 
 
private boolean action00() {
 String result = true;
 try {
  System.out.println(1/0);
 } catch (Exception e) {
  result = false;
 }
 return result;
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • SpringBoot?容器刷新前回調(diào)ApplicationContextInitializer

    SpringBoot?容器刷新前回調(diào)ApplicationContextInitializer

    這篇文章主要為大家介紹了SpringBoot?容器刷新前回調(diào)ApplicationContextInitializer使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Spring啟動流程refresh()源碼深入解析

    Spring啟動流程refresh()源碼深入解析

    這篇文章主要給大家介紹了關(guān)于Spring啟動流程refresh()源碼深入解析的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 淺析java中String類型中“==”與“equal”的區(qū)別

    淺析java中String類型中“==”與“equal”的區(qū)別

    這篇文章主要介紹了淺析java中String類型中“==”與“equal”的區(qū)別,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 淺談Slf4j與其他日志系統(tǒng)兼容的使用方法

    淺談Slf4j與其他日志系統(tǒng)兼容的使用方法

    下面小編就為大家分享一篇淺談Slf4j與其他日志系統(tǒng)兼容的使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Springboot Mybatis Plus自動生成工具類詳解代碼

    Springboot Mybatis Plus自動生成工具類詳解代碼

    mybatis-plus 是一個 Mybatis 的增強工具,在 Mybatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,這篇文章帶你使用Springboot Mybatis Plus自動生成工具類
    2021-11-11
  • java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例

    java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例

    ArrayBlockingQueue是一個基于數(shù)組實現(xiàn)的阻塞隊列,本文就來介紹一下java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • java實現(xiàn)String類型和Date類型相互轉(zhuǎn)換

    java實現(xiàn)String類型和Date類型相互轉(zhuǎn)換

    很多人表示,java將string類型轉(zhuǎn)為date類型不知道應(yīng)該怎樣做,本文就來介紹一下java實現(xiàn)String類型和Date類型相互轉(zhuǎn)換,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Java之SSM中bean相關(guān)知識匯總案例講解

    Java之SSM中bean相關(guān)知識匯總案例講解

    這篇文章主要介紹了Java之SSM中bean相關(guān)知識匯總案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Springboot解決跨域問題方案總結(jié)(包括Nginx,Gateway網(wǎng)關(guān)等)

    Springboot解決跨域問題方案總結(jié)(包括Nginx,Gateway網(wǎng)關(guān)等)

    跨域問題是瀏覽器為了保護用戶的信息安全,實施了同源策略(Same-Origin?Policy),即只允許頁面請求同源(相同協(xié)議、域名和端口)的資源,本文給大家總結(jié)了Springboot解決跨域問題方案包括Nginx,Gateway網(wǎng)關(guān)等),需要的朋友可以參考下
    2024-03-03
  • 深入理解SpringCloud之Eureka注冊過程分析

    深入理解SpringCloud之Eureka注冊過程分析

    eureka是一種去中心化的服務(wù)治理應(yīng)用,其顯著特點是既可以作為服務(wù)端又可以作為服務(wù)向自己配置的地址進行注冊,這篇文章主要介紹了深入理解SpringCloud之Eureka注冊過程分析
    2018-05-05

最新評論