mybatis-plus、Druid多数据源之事务示例

简述

上一篇文章《springboot、mybatis-plus、Druid多数据源环境搭建》讲了多数据源的环境搭建,并做了个查询示例;之前一个数据库操作有事务一说,那么多数据源自然也得有,下面就以增改操作来做个示例。关于环境搭建还不太明白的道友,可以先去看一下我的上一篇文章。

(阅读本文大概花费两分钟)

实践

1、这里就无需引入额外依赖了,主要是使用注解

com.baomidou.dynamic.datasource.annotation.DSTransactional

设定场景:编写一个方法,方法内先往主库插入数据,再手动制造一个异常,然后再往副库插入数据。
mybatis-plus、Druid多数据源之事务示例_第1张图片

(二)mybatis-plus、Druid多数据源之事务示例
项目启动,查看执行结果:
mybatis-plus、Druid多数据源之事务示例_第2张图片
mybatis-plus、Druid多数据源之事务示例_第3张图片
mybatis-plus、Druid多数据源之事务示例_第4张图片
mybatis-plus、Druid多数据源之事务示例_第5张图片
mybatis-plus、Druid多数据源之事务示例_第6张图片
2、主库service方法使用注解
org.springframework.transaction.annotation.Transactional
mybatis-plus、Druid多数据源之事务示例_第7张图片
mybatis-plus、Druid多数据源之事务示例_第8张图片
如下图,上层没用@DSTransactional注解,事务无法识别多数据源的表,
mybatis-plus、Druid多数据源之事务示例_第9张图片
mybatis-plus、Druid多数据源之事务示例_第10张图片

总结,在使用多数据源集成时,禁止再使用@Transactional注解,以防止嵌套调用时不当,出现运行时异常,即统一使用@DSTransactional注解开启事务。

你可能感兴趣的:(springboot,mybatis-plus,数据库,spring,boot,java,数据库)