java中手动回滚事物

为什么要手动回滚事物?
1、原因是因为代码中我写了try catch,try catch后异常被catch捕获了,catch后的业务代码还会继续执行,捕获后的异常会在后台的日志中打印,不会把这个异常错误抛给前端了;
2、这个时候如果你使用的是事物注解@Transcation,因为你异常被捕获所以它并不会帮你回滚代码了,这时候就需要我们自己在catch中进行手动事物回滚。

@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private DataSourceTransactionManager transactionManager;

    public Result test(){
    // 手动事物
        TransactionStatus transaction = transactionManager.getTransaction(new DefaultTransactionDefinition());
        try{
            // 业务代码修改

            // 业务代码新增

            // 业务代码删除

            //一定要写在所有业务的最后面
            transactionManager.commit(transaction);

        }catch (Exception e){
            //异常中进行手动回滚
            transactionManager.rollback(transaction);
            return Result.fail("出现异常");
        }

        return Result.succ("修改成功");
    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值