mybatis 事物

项目中数据访问用的是mybatis,本来用的都是声明式事物,即 @Transactional。

最近碰到一个问题,需要事物是在接口A中某一个函数fun()内提交的。

刚开始想着把事物声明放到 fun()的方法上声明,发现无效,查了资料发现 @Transactional 是基于AOP实现的,只对对外接口有效,对内部方法无效。

spring中是支持声明式事物和编程式事物的,后来就想到用编程式事物。

一开始想到的是使用sqlSessionFactory,如下

但是操作过程发现每个mapper都需要手动获取比较麻烦,关联到一两个mapper还好,mapper多了,操作就比较繁琐了

后来查资料发现了 PlatformTransactionManager,使用方法如下

功能正常后又查了下资料,发现spring的编程式事物更多的是推荐使用 TransactionTemplate,试了下感觉写起来比PlatformTransactionManager 复杂点,但不需要额外的组件注入

 

posted @ 2017-12-01 17:12  hello_myworld  阅读(215)  评论(0编辑  收藏  举报