MySQL默认的存储引擎为MyISAM不支持事务,需要改成InnoDB才能支持事务,此处如何查看与修改略过。

 

网上很多人说在启动类中加入@EnableTransactionManagement注解才能生效,但在实际的开发过程中发现不加也可以,原因是SpringBoot自动开启了事务

 

@Transactional注解能加在类或者方法上,优先级:方法>类

 

事务生效总结:

  方法A调用方法B事务生效总结:

  A有T  B有T  生效

  A有T  B无T  生效

  A无T  B有T  不生效

小例子

@Transactional
@Service
public class DemoService {

    @Autowired
    private DemoDao demoDao;
    
    public void test(User user) {
        try{
            demoDao.insert(user);
            int i = 1/0;
        } catch (Exception e) {
            // 事務已經回滾
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }

}

 

posted on 2019-11-29 13:18  帅过驴的袋鼠  阅读(1432)  评论(0编辑  收藏  举报