Commit 1eab7759 by gechengyang

事务管理

parent e7e39cee
package com.brilliance.remit.common.util;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.support.DefaultTransactionDefinition;
public class DbUtil {
public static DefaultTransactionDefinition getDbDefinition() {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// 设置事务隔离级别,开启新事务
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
return def;
}
}
package com.brilliance.remit.service.imp; package com.brilliance.remit.service.imp;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionStatus;
import com.brilliance.remit.common.util.DbUtil;
import com.brilliance.remit.db.dao.CpdMapper; import com.brilliance.remit.db.dao.CpdMapper;
import com.brilliance.remit.db.dao.TrnMapper; import com.brilliance.remit.db.dao.TrnMapper;
import com.brilliance.remit.db.model.Cpd; import com.brilliance.remit.db.model.Cpd;
...@@ -15,15 +20,27 @@ public class RemitServiceImp implements RemitService { ...@@ -15,15 +20,27 @@ public class RemitServiceImp implements RemitService {
@Autowired @Autowired
private TrnMapper trnMapper; private TrnMapper trnMapper;
private static int i = 10; private static int i = 10;
@Resource(name = "txManager")
private DataSourceTransactionManager transactionManager;
@Override @Override
public void test() { public void test() {
// 事务操作
TransactionStatus status = transactionManager.getTransaction(DbUtil.getDbDefinition());
try {
Cpd cpd = new Cpd();
cpd.setINR(String.valueOf(i));
i++;
cpdMapper.insert(cpd);
transactionManager.commit(status);
cpdMapper.insert(cpd);
System.out.println("insert cpd success !!!");
transactionManager.commit(status);
} catch (Exception e) {
e.printStackTrace();
transactionManager.rollback(status);
}
Cpd cpd = new Cpd();
cpd.setINR(String.valueOf(i));
i++;
cpdMapper.insert(cpd);
System.out.println("insert cpd success !!!");
} }
} }
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<!-- 自动扫描注解的bean  --> <!-- 自动扫描注解的bean  -->
<context:component-scan base-package="com.brilliance.remit.service"/> <context:component-scan base-package="com.brilliance.remit.service"/>
<!-- 配置数据源  --> <!-- 配置数据源  -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@172.17.2.4:1521:orcl"/> <property name="url" value="jdbc:oracle:thin:@172.17.2.4:1521:orcl"/>
<property name="username" value="xxremit"/> <property name="username" value="xxremit"/>
...@@ -30,6 +30,10 @@ ...@@ -30,6 +30,10 @@
<property name="mapperLocations" value="classpath*:com/brilliance/remit/db/mapper/**/*.xml"/> <property name="mapperLocations" value="classpath*:com/brilliance/remit/db/mapper/**/*.xml"/>
</bean> </bean>
<!-- 事务管理器  -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置mapper对应的dao和mybatis工厂  --> <!-- 配置mapper对应的dao和mybatis工厂  -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment