springboot编程式事务TransactionTemplate的使⽤
总结:在类中注⼊TransactionTemplate,即可在springboot中使⽤编程式事务。
spring⽀持编程式事务管理和声明式事务管理两种⽅式。
编程式事务管理使⽤TransactionTemplate或者直接使⽤底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使⽤TransactionTemplate。
声明式事务管理建⽴在AOP之上的。其本质是对⽅法前后进⾏拦截,然后在⽬标⽅法开始之前创建或者加⼊⼀个事务,在执⾏完⽬标⽅法之后根据执⾏情况提交或者回滚事务。对于声明式事务管理,springboot中推荐使⽤@Transactional注解。
1.为何⽤?
多数情况下,⽅法上声明@Transactional注解声明事务即可,简单、快捷、⽅便,但@Transactional声明式事务的可控性太弱了,只可在⽅法或类上声明,做不到细粒度的事务控制。如果⼀个⽅法前10条sql都是select查询语句,只有最后2条sql是update语句,那么只对最后2条sql做事务即可。
2.如何⽤
<dependency>
<groupId&batis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
springboot aopspringboot中引⼊mybatis-spring-boot-starter依赖包即可。mybatis-spring-boot-starter依赖包中包含了spring-boot-starter-jdbc 的依赖,spring-boot-starter-jdbc中包含DataSourceTransactionManager事务管理器以及⾃动注⼊配置类DataSourceTransactionManagerAutoConfiguration。
代码中使⽤,在使⽤bean中注⼊TransactionTemplate即可:
@Service
public class TestServiceImpl {
@Resource
private TransactionTemplate transactionTemplate;
public Object testTransaction() {
//数据库查询
dao.select(1);
ute(status -> {
//数据库新增
dao.insert(2);
dao.insert(3);
return new Object();
});
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论