@Transactional注解在Springboot+mysql中使用的注意事项

记录一下在用Springboot+mysql中使用@Transactional注解时遇到的问题解决方法:
1.启动类Application添加注解@EnableTransactionManagement增加事务支持;
2.service类方法上加@Transactional注解,只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事务在遇到非运行时异常时也回滚。
Exception分类:
(1)RuntimeException:运行时异常,也叫未受检异常。比如:NullPointerException/ArithmeticException/ClassCastException/ArrayIndexOutOfBoundsException/StringIndexOutOfBoundsException
(2)编译期异常:就是客观上可以通过java编译期可以检测出的并且需要coder处理的异常,否则程序就会发生错误,无法通过编译,比如:IOException/FileNotFoundException/ClassNotFoundException
/SQLException/NoSuchFieldException/NoSuchMethodException
3.mysql数据库的存储引擎必须是innoDB,其他类型不支持事务。
show engines:查看数据库支持的存储引擎类型
show variables like ‘%storage_engine%’:查看使用的存储引擎类型
show create table 表名:查看表使用的存储引擎类型
alter table 表名 ENGINE = InnoDB:修改表对应的存储引擎类型
4.service类的方法要添加throw Exception将异常抛出,不要将异常catch,放至controller层捕获。否则事务不会回滚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值