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();//调用事务回滚的方法
            }
        }
  • 相关阅读:
    JSP—简介
    Dream
    树状数组模板
    夜未央Test1题解
    夜未央Test1
    并查集模板
    给即将面临Noip的二班同学
    USACO chapter1
    二叉堆模板
    线段树模板
  • 原文地址:https://www.cnblogs.com/Neonuu/p/14658871.html
Copyright © 2011-2022 走看看