zoukankan      html  css  js  c++  java
  • Spring主动触发事务回滚

    前言:

    Spring的事务回滚采用@Transactional,当方法中抛出异常时,会触发事务回滚。

    如果没有异常,根据业务逻辑,想要主动触发事务回滚,要怎么实现呢?例如,调用一个第三方接口,如果返回值不是200,就要触发事务回滚。这期间并没有代码错误而抛出异常,只是根据接口的返回值来判断是否回滚。

    方法一:

    throw new RuntimeException(); 

    方法二:

    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    实测:数据库中没有新增数据

        @Test
        @Transactional
        public void contextLoads3() throws Exception{
            //创建对象
            Game g1 = new Game();
            g1.setName("test");
            g1.setPicUrl("111");
            g1.setType(1);
            //新增到数据库
            gameRepository.save(g1);
            if(true){
                //throw new RuntimeException();//主动抛出异常
                //TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//调用事务回滚的方法
            }
        }
  • 相关阅读:
    原来 是 需要的,
    传说中的 拉伸,
    date + 排序,
    两个 header,
    招财铃,负责模块,
    一个字母,
    一个词,
    vue+webpack静态资源路径引用
    Webstorm 的 Tab 键调整缩进值
    ES6常用语法
  • 原文地址:https://www.cnblogs.com/Neonuu/p/14658871.html
Copyright © 2011-2022 走看看