Spring boot +mybatis 实现声明式事务管理

在项目中,一个函数需要进行两条sql操作,两条sql操作为一个整体,期望是要不一起执行,要不都不执行,所以引入了事务管理。


遇到的问题&未解决的坑:


在一个@service实现了一个事务管理的函数,发现在另一个service里面添加此方法的@Autowired注解,事务管理失效


解决办法:

在@controller层调用此方法时添加   @Transactional注解


方法以及调用添加的注解:


@Transactional(isolation = Isolation.READ_COMMITTED,propagation = Propagation.REQUIRED,readOnly = false,rollbackFor = {Exception.class})


只要是函数内部发生exception及实现回滚

方法级别:





controller层级别:





新发现 :



如果实现事务管理的service不被别的service调用,则不需要在controller层添加事务注解,如果被别的service调用,则事务管理失效,此时可以在controller层加上事务管理的注


解,service层加不加事务管理注解不起作用




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值