Spring(3.2.8) + Mybatis(1.2.5)动态数据源路由大致过程

本文详细解析了MyBatis整合Spring进行事务管理的过程,包括如何通过自定义数据源实现读写分离,以及在不同组件中事务是如何被管理和控制的。从SqlSessionFactoryBean的配置到SpringManagedTransaction的具体实现,深入探讨了MyBatis与Spring框架协同工作下的事务管理机制。

1、怎么配置配置省略了
注意:(1)配置切面拦截service 设置database标识就是你要使用哪个数据源 前提是配置好AbstractRoutingDataSource)
(2)自定义数据源继承org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource
2、我们在项目中用来读写分离
3、沿着这个类路径看找到原理
(1)org.mybatis.spring.SqlSessionFactoryBean
默认使用spring提供的事务管理工厂在这里插入图片描述
(2)org.apache.ibatis.session.defaults.DefaultSqlSessionFactory
eg:在这里插入图片描述
在这里插入图片描述
final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment);返回的是spring提供的事务管理工厂
(3)org.apache.ibatis.session.defaults.DefaultSqlSession
返回org.mybatis.spring.transaction.SpringManagedTransaction
(4)org.apache.ibatis.session.defaults.DefaultSqlSession
eg:在这里插入图片描述
(5)org.apache.ibatis.executor.SimpleExecutor
在这里插入图片描述
stmt = prepareStatement(handler, ms.getStatementLog());
在这里插入图片描述
在这里插入图片描述
(6)org.mybatis.spring.transaction.SpringManagedTransaction在这里插入图片描述
(7)org.springframework.jdbc.datasource.DataSourceUtils
这边获取到你传递的database,回调之后获取你切面中设置的数据源(这个数据源为你继承自AbstractRoutingDataSource的数据源)在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值