springboot--事务的使用
@Transactional原理 事务是一些sql语句对数据库操作的集合,因此如果在一个Java方法里涉及了对数据库的操作,业务需要的话我们就可以考虑把这些操作作为一个事务。通过在方法上加个@Transactional(....)注解即可。 如: public class Transaction { @Transactional(....) public void doSomething() { ..... } } 对于springboot,加了@Transactional的方法其实是这样执行的: BEGIN TRANSACTION; try{ doSomething(); //执行方法 COMMIT; }catch(Throwable t){ if(t是该回滚的异常) ROLLBACK; else COMMIT; } 知道了注解的原理就好办了,接下来只需了解这个注解的参数即可应付很多业务场景。 控制回滚参数 在@Transactional(rollbackFor = xx.class , noRollbackFor = yy.class)中,使用了控制回滚的参数。rollbackFor = xx.class 表示抛出的异常时xx类及其子类,事务会回滚; noRollbackFor = yy.class表示抛出异常是yy类或其子类,事务不会回滚。 catch到异常怎么办