springboot中使用事务的管理
springboot中有两种事务管理方式:
1、编程式事务;使用transactionTemplate和TransactionManager实现
2、声明式事务;使用@Transactional 注解
今天这里介绍下第一种编程式事务,使用transactionTemplate和TransactionManager实现;
1、transactionTemplate编程事务
使用transactionTemplate的时候,需要将TransactionTemplate对象注入到当前类中,再使用它提供的execute方法执行事务并返回相应的执行结果,如果出现异常,就手动回滚事务,具体实现如下;
@Resource
private TransactionTemplate transactionTemplate;
@Override public void TransactionalTest(UserInfo userInfo) { transactionTemplate.execute(status -> { int result = 0; try { result = userMapper.insert(userInfo); //int i = 1/0; }catch (Exception e){ e.printStackTrace(); status.setRollbackOnly(); // 主要就是这行的手动回滚 } return result; }); }
2、使用transactionManager,相对会麻烦点,需要注入两个对象,DataSourceTransactionManager 和TransactionDefinition ,TransactionManager提供了commit和rollback方法
@Resource private DataSourceTransactionManager transactionManager; @Resource private TransactionDefinition transactionDefinition; @Override public void TransactionalManagerTest(UserInfo userInfo) { TransactionStatus transaction = transactionManager.getTransaction(transactionDefinition); int result = userMapper.insert(userInfo); if (result > 0){ // 提交事务 transactionManager.commit(transaction); }else { // 回滚事务 transactionManager.rollback(transaction); } }
以上仅自己的学习笔记,仅供参考