springboot+mybatis 事務管理
之前就調研過基於spring和hibernate的事務管理配置,在專案中需要使用mybatis,所有就測試了一下如何使用,感覺還是比較方便的。記錄如下:
1、如何測試事務?
應用場景是有一個刪除操作,需要刪除多個表的多條記錄,並且要求,要嘛都刪除,要嘛都不刪除。
2、mybatis的sql.xml檔案中新增一個刪除方法
<!-- 刪除一條記錄 -->
<delete id="deleteByOneCond" parameterType="java.util.Map">
delete from ${params._tableName} where ${params._columnName} = #{params._value}
</delete>
3、applicationcontext.xml中新增
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="MarketingDataSource"></property>
</bean>
<tx:annotation-driven/>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
4、新增一個服務,需要使用多個delete方法
@Transactional(isolation=Isolation.SERIALIZABLE,timeout=3000) @Override public BaseResponse delTheme(BaseBusinessRequest request) { DelThemeEntity delThemeEntity=(DelThemeEntity)request; BaseResponse baseResponse =new BaseResponse(); Map map=new HashMap<String,Object>(); String theme_en=delThemeEntity.getTheme_en(); //獲取kpis map.put("theme_en", theme_en); List<KpiEntity> kpis=magiccubeDao2.getKpis(map); //先刪除kpi下面的figures for(KpiEntity kpi:kpis){ map=new HashMap<String,Object>(); map.put("_tableName", "KF_MAGICCUBE_ONLINE_FIGURE"); map.put("_columnName", "kpi_en"); map.put("_value", kpi.getKpi_en()); magiccubeDao2.deleteByOneCond(map); } <span style="color:#FF0000;"> //人為製造異常丟擲 //int a =1/0;</span> //再刪除theme下面的kpi map=new HashMap<String,Object>(); map.put("_tableName", "KF_MAGICCUBE_ONLINE_KPI"); map.put("_columnName", "theme_en"); map.put("_value", theme_en); magiccubeDao2.deleteByOneCond(map); //最後刪除theme本身 map=new HashMap<String,Object>(); map.put("_tableName", "KF_MAGICCUBE_ONLINE_THEME"); map.put("_columnName", "theme_en"); map.put("_value", theme_en); magiccubeDao2.deleteByOneCond(map); baseResponse.setReturn_code(StatusCode.OK.getValue()); baseResponse.setReturn_msg(StatusCode.OK.getName()); return baseResponse; }
5、測試事務是否正常執行
locations={ "classpath:applicationContext.xml" })很重要,告訴springboot同時載入xml,不然在DI時會報找不到bean的錯誤
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MagicCube.class,locations={ "classpath:applicationContext.xml" })//springboot 啟動類
@WebAppConfiguration
public class OnlineServiceImplTest {
@Autowired
public IOnlineService onlineService;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testTransactionalDel() {
DelThemeEntity delEntity=new DelThemeEntity();
delEntity.setTheme_en("huanlegou_sale");
onlineService.delTheme(delEntity);
}
}
6、在1/0執行時,發生執行時異常,異常丟擲,則回滾。在之前刪除的資料會回滾。相關推薦
springboot mybatis 事務管理
private 測試 love cto frame update 數據源 ren jdbc 本文主要講述springboot提供的聲明式的事務管理機制。 一、一些概念 聲明式的事務管理是基於AOP的,在springboot中可以通過@Transactional註解的方式
SpringBoot+Mybatis事務管理
一、使用場景 在使用事務管理前,有必要先了解下應用場景。如實際過程中一個購買操作包含多個執行過程:查詢庫存、下單、更新庫存,實際操作時,由於高併發存在,可能到下單結束時,更新庫存出錯,那本次購買操作就是失敗的,其下單結果應該被回滾。這種情況就需要引入事務控制,保證整個操
springboot+mybatis 事務管理
之前就調研過基於spring和hibernate的事務管理配置,在專案中需要使用mybatis,所有就測試了一下如何使用,感覺還是比較方便的。記錄如下: 1、如何測試事務? 應用場景是有一個刪除操作,需要刪除多個表的多條記錄,並且要求,要嘛都刪除,要嘛都不刪除。 2、myb
spring,mybatis事務管理配置與@Transactional註解使用[轉]
exception true throws r.java 存在 隔離 enc prot 底層 spring,mybatis事務管理配置與@Transactional註解使用 概述事務管理對於企業應用來說是至關重要的,即使出現異常情況,它也可以保證數據的一致性。Sprin
spring,mybatis事務管理配置與@Transactional註解使用
抽象 classname 初始 for batis 時間限制 自動提交 data second spring,mybatis事務管理配置與@Transactional註解使用 概述事務管理對於企業應用來說是至關重要的,即使出現異常情況,它也可以保證數據的一致性。Spring
Mybatis 事務管理
工廠 height nag 發生 配置 配置文件 pan drive alt mybatis的事務和數據源有著非常密切的聯系。上文講述了mybatis的數據源,本文要講述的便是mybatis的事物 1.事務的分類 我們還是已一段xml配置文件為例 <envir
mybatis事務管理機制詳解
attribute log builder tween gen 事務管理 getc there spro 1.mybatis事務的配置和使用 mybatis事務有兩種使用方式: (a):使用JDBC的事務管理機制:即使用java.Sql.Connection對象完成對事務的
Mybatis事務管理
一、Mybatis事務概述 對於資料庫事務而言,一般包括以下幾個操作:建立、提交、回滾、關閉。MyBatis把這些抽象為Transaction介面: &nbs
Spring整合MyBatis 事務管理
前言 spring事務管理包含兩種情況,程式設計式事務、宣告式事務。而宣告式事務又包括基於註解@Transactional和tx+aop的方式。那麼本文先分析程式設計式註解事務和基於註解的宣告式事務。 程式設計式事務管理使用TransactionTempla
SSM in Action——MyBatis事務管理和快取機制
MyBatis的事務管理 眾所周知,事務的四個特性ACID。永續性、原子性、隔離性以及一致性。 Transaction介面 mybatis的事務設計重點就是Transaction介面,它有兩個實現類,分別是JdbcTransaction和ManagedTrans
spring,mybatis事務管理 隔離級別與事務傳播
事務隔離級別 隔離級別是指若干個併發的事務之間的隔離程度。TransactionDefinition 介面中定義了五個表示隔離級別的常量: TransactionDefinition.ISOLATION_DEFAULT:這是預設值,表示使用底層資料庫的預設隔離級別。對大
springboot分散式事務管理(atomikos)
最近公司有用到分散式事務管理,結合公司和我上網查詢的一些資料,特來梳理一下我思路。 本篇文章使用時(atomikos)來進行springboot的分散式事務管理 1.引用jta-atomikos架包 <dependency> <groupId>
springMvc+mybatis事務管理不起作用解決
而由於伺服器啟動時的載入Spring相關配置檔案的順序為applicationContext.xml(Spring的配置檔案) ---> applicationContext-mvc.xml(SpringMVC的配置檔案),按照上面的配置Spring載入applicationContext.xml配置
Mybatis事務管理-jdbc事務
一、mybatis.xml配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="
Mybatis事務管理的兩種方式
<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.
springmvc mybatis 事務管理不生效原因
spring-mvc事務配置如下 <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <tx:attributes><tx:method nam
mybatis---事務管理機制
MyBatis作為Java語言的資料庫框架,對資料庫的事務管理是其非常重要的一個方面。本文將講述MyBatis的事務管理的實現機制。首先介紹MyBatis的事務Transaction的介面設計
MyBatis事務管理機制
element 成了 logic connect ole sre action mybatis事務 nod MyBatis作為Java語言的數據庫框架,對數據庫的事務管理是其非常重要的一個方面。本文將從事務的分類、配置和實現分析MyBatis的事務管理的實現機制。 MyBa
3.3.6 MyBatis事務管理
新增 sql 語句 led mybatis事務 工具 put lose 管理 數據庫操作 六、MyBatis事務管理 1. 事務(Transaction) (1) 事務是數據庫操作的最小單元, 有 ACID 的特性. 應該保證一個事務的的 SQL 語句要麽同時成功,
SpringBoot學習筆記(三):SpringBoot整合Mybatis、SpringBoot事務管理、SpringBoot多資料來源
SpringBoot整合Mybatis 第一步我們需要在pom.xml裡面引入mybatis相關的jar包 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artif