SpringBoot+mybatis使用@Transactional无效
程序员文章站
2022-04-28 12:43:51
项目中新增过程中如果出现异常需要回滚, 在service实现方法中使用@Transactional注解失效 解决: 1, 在controller中使用try{}catch捕捉异常 2, 在service实现中使用@Transactional注解 controller service: @Transa ......
项目中新增过程中如果出现异常需要回滚, 在service实现方法中使用@transactional注解失效
解决:
1, 在controller中使用try{}catch捕捉异常
2, 在service实现中使用@transactional注解
controller
@requestmapping(value = "/add",method = requestmethod.post) @responsebody public result add(httpservletrequest request, @requestbody user user){ result result = new result(); try{ result = service.insert(user); }catch (exception e){ logger.error("失败", e); } return result; }
service:
@transactional(rollbackfor = exception.class) 设置出现什么异常回滚, 默认情况下,spring会对unchecked异常进行事务回滚;如果是checked异常则不回滚
java里面将派生于error或者runtimeexception(比如空指针,1/0)的异常称为unchecked异常, 其他继承自java.lang.exception得异常统称为checked exception,如ioexception、timeoutexception等
@override @transactional(rollbackfor = exception.class) public result insert(user user){ result result = new result();int result = usermapper.insert(user);return result; }
总结: 异常捕获在controller去做,这样在service层中 @transactional在发生异常时可以正常进行回滚操作。
参考:
推荐阅读
-
SpringBoot+Mybatis项目使用Redis做Mybatis的二级缓存的方法
-
解决Intellij IDEA 使用Spring-boot-devTools无效的问题
-
android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法
-
解决jQuery使用append添加的元素事件无效的问题
-
spring事务的@Transactional使用事务不生效问题
-
微信中使用popup等弹窗组件时点击输入框input键盘弹起导致IOS中按钮无效处理办法
-
分析nofollow链接属性使用无效
-
springmvc方法解释器(MultiActionController)使用aop无效
-
在vue中使用回调函数,this调用无效的解决
-
create-react-app使用antd按需加载的样式无效问题的解决