方法一:手动进行回滚(不推荐使用)
步骤:
-
1、自定义异常(继承exception类,添加有参和无参的构造方法)
-
2、将嵌套for循环,写到一个自定义的方法,产生自定义的异常并抛出
-
3、调用嵌套for循环的方法,捕获异常并手动进行回滚操作
注意:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//手动进行回滚的语句
方法二、自动回滚(适用于没有返回值的service)
将方法一中的第三部改为(在controller中可能需要捕获异常,具体看实际情况)
- 步骤一:自定义异常
-
步骤二:嵌套for循环抛出异常
方法前加上这些代码(事务处理注解):
主要的事务代码:
-
步骤三:controller中捕获异常进行处理