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);
        }
    }

以上仅自己的学习笔记,仅供参考

posted @ 2024-03-18 10:52  多多指教~  阅读(18)  评论(0编辑  收藏  举报