如何在spring boot中使用事务呢?

一、前提

(1)保证数据库支持事务

mysql的数据库需要使用MyISAM引擎,Innodb默认不支持事务。反正默认用Innodb就对了。

(2)正确整合了spring boot + mybatis

起码要能正常地进行查询,不然怎么能启用事务呢。

二、如何使用事务

(1)先正常写一个insert方法

这些都是轻车熟路啦!

(2)人为制造一个错误,并且抛出,之后加上@Transactional注解

抛出这个错误:

其实和spring mvc中的套路差不多,但是spring mvc中需要在mybatis的配置文件中开启事务配置,但是在spring boot不需要。

记得用@Transactional注解去修饰需要使用事务的方法。

当然可以通过配置这个@Transactional的各种选项来进行不同形式的事务。和spring mvc中其实是一模一样的。

(3)实现效果

可以看见全局错误捕获器捕获到了我们人为抛出的错误:

2017-02-08 16:59:42.522 WARN 4832 — [nio-8080-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by Handler execution: springboot.exception.testException: 虽然插入成功了,但是这个混蛋非要抛出一个错误!我也很绝望啊!

所以返回了错误回显:

这里给我一个提示,就是再也不用在方法里自定义错误了,统一交给错误捕获器就行。以前的老习惯没有改掉…

数据库里也没有插入的数据,说明是成功回滚了。

三、总结

spring boot中的事务比spring mvc中的配置要简单一些。

因此更需要搞明白事务发生了什么,为什么。

发表评论

电子邮件地址不会被公开。 必填项已用*标注