1、事务管理配置类
@Component
public class TransactionConfig {
@Autowired
private DataSourceTransactionManager dataSourceTransactionManager;
/**
* 开启事务
* @return
*/
public TransactionStatus beginTransaction(){
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(new DefaultTransactionDefinition());
return transactionStatus;
}
/**
* 提交
* @param
* @return
*/
public DataSourceTransactionManager commit(TransactionStatus transactionStatus){
dataSourceTransactionManager.commit(transactionStatus);
return dataSourceTransactionManager;
}
/**
* 提交
* @param
* @return
*/
public DataSourceTransactionManager rollback(TransactionStatus transactionStatus){
dataSourceTransactionManager.rollback(transactionStatus);
return dataSourceTransactionManager;
}
}
2、测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MockTest {
@Autowired
private TransactionConfig transactionConfig;
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void jdbcTest(){
TransactionStatus status = null;
try{
status = transactionConfig.beginTransaction();//获取事务
this.jdbcTemplate.update("insert into userr (id,name,age) values ('1','zs',12)");
int aa = 1/0;//模拟异常
this.jdbcTemplate.update("insert into userr (id,name,age) values ('2','ls',13)");
transactionUtil.commit(status);//提交事务
}catch (Exception e){
e.printStackTrace();
if(status != null){
transactionUtil.rollback(status);//事务回滚
}
}
}
}
//经测试当方法发生异常时,事务发生回滚