小伙伴们肯定都知道springboot吧,现如今只要是个程序员就没有不知道springboot的。如今在各种企业级应用开发中事务回滚使用的非常频繁,小伙伴们知道springboot中该怎么配置事务回滚吗?它有几种方法呢?下面就跟小编来详解了解下吧。
在springboot如果想集成事务的回滚操作,有两种方法,一是自动回滚,二是手动回滚,不管哪种回滚都必须使用到@Transactional注解。下面我们来看看它们要怎么使用吧。
一、自动回滚
自动回滚有个前提条件,它一定必须是public的,其次,在它的方法上必须要添加上@Transactional 注解。
例:
@Override @Transactional public Boolean add() { try { //第一次插入,教师表 Teacher teacher = teacherService.add(); if (teacher == null) { return null; } //第二次插入,学生表 int result = studentMapper.insertSelective(student); if (true) { throw new Exception(); } return true; } catch (Exception e) { //唯一区别,在这里 throw new RuntimeException(); } finally {} }
二、手动回滚
手动回滚的唯一条件就是一定要在方法上加入@Transactional注解,它与自动回滚的唯一区别可能就是要用到
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 语句了吧,这个语句就是手动回滚语句。
例:
@Override @Transactional public Boolean add() { try { //第一次插入,教师表 Teacher teacher = teacherService.add(); if (teacher == null) { return null; } //第二次插入,学生表 int result = studentMapper.insertSelective(student); if (true) { throw new Exception(); } return true; } catch (Exception e) { //唯一区别,在这里 TransactionAspectSupport.currentTransactionStatus() .setRollbackOnly(); } finally {} }
PS:其实以实际来说,我们不一定非要在catch中添加手动回滚语句,你其实可以在任何一个地方进行判断然后使用手动回滚语句,它会继续之后语句后的所有方法,但一般不建议这样使用,可能会有不必要的性能损耗出现。
以上就是今天的全部内容了,如果你还想了解更多java架构师知识,就一定要持续关注我们的网站噢。
推荐阅读: