目前百度能搜索到的大部分是各自单独实现的aop以及多数据源的管理,使用起来比较复杂,而且做得也相对来说不是很完善,比如是否要考虑嵌套事务这种以及多数据源事务的支持方式,很多博主都没有涉及到,大多是简单的基于spring框架的拦截处理,自己实现不仅有不完善的缺点、可扩展性也是比较差的,后期版本维护升级或者支持更加复杂的功能就需要进行大改动以及全面的测试,风险系数也是蛮高的。mybatis-plus高版本在2021年下半年已经自己实现了在不借助外部协调者seata的情况下通过实现spring分布式事务的相关接口和相关拦截器而最终做到了多数据源事务的统一提交和回滚管理。接下来我将对其使用方式以及实现细则进行详细的说明。
1、首先,在用mybatis-plus的时候需要注意,部分配置项的名称跟mybatis有一定出入
mybatis的yml配置如下
spring:
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://ip:3306/xx?useAffectedRows=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
username: xx
password: xx
type: com.zaxxer.hikari.HikariDataSource
minimum-idle: 5
maximum-pool-size: 15
auto-commit