@Override publicboolean testDelete(String jobCode) throws Exception { boolean flag = false;
//1.获取事务控制管理器
DataSourceTransactionManager transactionManager = HqznContext.getBean(
"transactionManager", DataSourceTransactionManager.class);
//2.获取事务定义
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
//3.设置事务隔离级别,开启新事务
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
//4.获得事务状态
TransactionStatus status = transactionManager.getTransaction(def); try {
//5.具体的数据库操作(多个)
BOBaseJob r = new BOBaseJob();
r.setJobCode("SW001");
r.setJobName("事务001");
BOBaseJobMapper.deleteByPrimaryKey(jobCode);
BOBaseJobMapper.insert(r);
flag = true;
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
} return flag;
}
结合日志分析:
(1)获取Mybatis下的sqlSession
DEBUG: [org.mybatis.spring.SqlSessionUtils.(28)debug] - Creating SqlSession with JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@64861c5d]
DEBUG: [java.sql.Connection.(28)debug] - ooo Connection Opened
(2)Spring控制事务
DEBUG: [org.mybatis.spring.transaction.SpringManagedTransaction.(28)debug] - JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@64861c5d] will be managed by Spring
(3)事务开启
DEBUG: [org.mybatis.spring.SqlSessionUtils.(28)debug] - Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@eed9a0e]