當前位置: 首頁 > news >簡體>SpringBoot整合事務回滾

SpringBoot整合事務回滾

SpringBoot整合事務回滾

  • 一、自動回滾
  • 二、手動回滾


一、自動回滾

自動回滾有個前提條件,它一定必須是public的,其次,在它的方法上必須要添加上@Transactional 注解。
在方法或者類上加上注解@Transactional
1.Error一定會回滾。
2.異常中:運行時異常(unchecked exceptions)一定會回滾。而非運行時異常(checked exceptions),如IOExceptions和SQLExceptions不會回滾。

checked例外也回滾:在整個方法前加上 @Transactional(rollbackFor=Exception.class)

unchecked例外不回滾: @Transactional(noRollbackFor=RunTimeException.class)

注意: 如果異常被try-catch了,事務就不回滾了,必須拋向被@Transactional注解的層。

@Transactional(rollbackFor = Exception.class)//事物回滾
public class InspectionController {@RequestMapping("admin/insert_equipment_inspection")public JsonData insertEquipmentInspection(@RequestBody Map<String, Object> parameter) {try {return inspectionService.insertInspectionEquipmentRecordAndMaintenanceRecord((Integer) parameter.get("inspectionId"), (Integer) parameter.get("equipmentId"), String.valueOf(parameter.get("checkStatus")));} catch (Exception e) {e.printStackTrace();throw e;}}
}

二、手動回滾

手動回滾的唯一條件就是一定要在方法上加入@Transactional注解,它與自動回滾的唯一區別可能就是要用到

public class InspectionController {@RequestMapping("admin/insert_equipment_inspection")public JsonData insertEquipmentInspection(@RequestBody Map<String, Object> parameter) {try {return inspectionService.insertInspectionEquipmentRecordAndMaintenanceRecord((Integer) parameter.get("inspectionId"), (Integer) parameter.get("equipmentId"), String.valueOf(parameter.get("checkStatus")));} catch (Exception e) {e.printStackTrace();//手動回滾TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();return JsonData.buildError("失敗");}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處:https://dhexx.cn/hk/18457.html

如若內容造成侵權/違法違規/事實不符,請聯系我的編程經驗分享網進行投訴反饋,一經查實,立即刪除!


相關文章:

  • 刪除域控中的一個服務器,刪除 Active Directory 域服務
  • spark常用RDD算子 - Reduce(),fold()
  • 將html轉換為word文檔的幾種方式
  • MCI 錄制指定格式音頻
  • SpringBoot整合自定義異常
  • spark常用RDD算子 - flatMapToPair
  • xp系統打印機服務器不可用,WinXP系統添加打印機操作無法完成如何解決?
  • [轉]UIApplicationDelegate分析小結
  • EDIT-SPOOL-臨時變量-已定義變量-COLUMN-PAGESIZE-LINESIZE
  • SpringBoot整合SpringSecurity+Redis權限控制
  • spark常用RDD算子 - reduceByKey
  • unturned服務器消息設置,unturned服務器怎么設置
  • XSS與字符編碼的那些事兒
  • SpringBoot整合EasyExcel+MyBatis-Plus實現Excel批量導入和導出
  • SAP修改前臺屏幕字段文本
  • spark常用RDD算子 - foldByKey
  • SpringBoot整合Shiro+Redis框架權限管理
  • 【Lucene4.8教程之二】索引
  • 自制AutoMapper實現DTO到持久層Entity的轉換
  • spark常用RDD算子 - SortByKey
  • Nginx安裝及使用
  • 成功路很多,選對放心日賺幾百不是問題
  • spark常用RDD算子 - groupByKey
  • SpringBoot整合RabbitMQ消息中間件及多種設計模式
  • LCHub:ChatGPT4和低代碼來臨,程序員面臨下崗?
  • 運行Applet程序
  • Ubuntu12.04編譯Android4.0.1源碼全過程-----附wubi安裝ubuntu編譯android源碼硬盤空間不夠的問題解決...
  • Redis+SpringBoot整合
  • spark常用RDD算子 - cogroup
  • c# Xml反序列化示例
  • 《大話數據結構》圖的BFS和DFS
  • spark常用RDD算子 - 鍵值對關聯操作 subtractByKey, join,fullOuterJoin, rightOuterJoin, leftOuterJoin
  • 樹莓派_Linux串口編程_實現自發自收
  • 3.3FactoryMethod——工廠方法
  • Springboot筆記
  • spark常用RDD算子 - PairRDD的Action操作countByKey, collectAsMap
  • Spring與Hibernate、Mybatis整合
  • 學習ASP.NET MVC(五)——我的第一個ASP.NET MVC CURD頁面
  • SpringCloud學習之路
  • Spark Rdd分區 coalesce()方法和repartition()方法
  • 存儲引擎-存儲結構之二:頁
  • 配置開發支持高并發TCP連接的Linux應用程序全攻略
  • Spark RDD中的寬依賴和窄依賴
  • 學習java虛擬機
  • javascript 設置元素樣式 函數
  • 解決問題
  • Spark RDD Partitioner 分區機制解析
  • MySQL學習日記
  • 【不積跬步,無以致千里】關閉631端口cups打印服務和8009端口ajp
  • 阿里云服務器上安裝mysql的心路歷程(博友們進來看看哦)