spring+mybatis 多数据库事务管理:一个方法里面能同时对两个数据库的数据进行操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring+mybatis 多数据库事务管理:一个方法里面能同时对两个数据库的数据进行操作相关的知识,希望对你有一定的参考价值。
比如:一个方法内:在A数据库里的user表插入一条记录,在B数据库里的user表插入一条记录,要么都插入成功,要么都插入失败,只要有一方失败,就回滚事务。(本人已在网上查了很多资料,请给出具体解决方案,感激不尽!)
定义两个DAO分别使用不同的数据源,ADAO连接A数据库,BDAO连接B数据库
定义一个Service类,加上Spring注解@Transactional,表示进行事务管理。
将ADAO和BDAO注入到Service类里面。
在service类里面创建一个方法,方法里调用ADAO的方法插入数据到A数据库的user表,然后调用BDAO的方法插入数据到B数据库的user表
这个行不通吧,你在Service层开启了事务之后切换数据库就无效了
追答可以的,漏说了一点,事务要配置成jta分布式事务。
用spring的org.springframework.transaction.jta.JtaTransactionManager来支持
我试试
参考技术A 我也想知道这个spring mybatis 多数据源之间怎么切换
<!-- 注解式事务管理 --<tx:annotation-driven transaction-manager="transactionManager" /
<!-- 自动扫描 mybatis mapper接口 --
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
<property name="basePackage" value="com.test.tt.mapper" /
<property name="sqlSessionFactory" ref="sqlSessionFactory"</property</bean<!-- 数据源2--
<!-- proxool连接池 --
<bean id="dataSource_d2" class="org.logicalcobwebs.proxool.ProxoolDataSource"
<property name="alias" value="$d2.alias" /
<property name="driver" value="$driver" /
<property name="driverUrl" value="$d2.driverUrl" /
<property name="user" value="$d2.user" /
<property name="password" value="$d2.password" /
<property name="houseKeepingTestSql" value="$house-keeping-test-sql" /
<property name="maximumConnectionCount" value="$maximum-connection-count" /
<property name="minimumConnectionCount" value="$minimum-connection-count" /
<property name="prototypeCount" value="$prototype-count" /
<property name="simultaneousBuildThrottle" value="$simultaneous-build-throttle" /
<property name="trace" value="$trace" /</bean
<bean id="sqlSessionFactory_d2" class="org.mybatis.spring.SqlSessionFactoryBean"
<property name="dataSource" ref="dataSource_d2" /
<property name="configLocation" value="classpath:mybatis-d2-config.xml"</property</bean<bean id="transactionManager_d2"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
<property name="dataSource" ref="dataSource_d2" /</bean
<!-- 注解式事务管理 -- 参考技术A
gitchat学术分享,动态多数据源,附带源码
以上是关于spring+mybatis 多数据库事务管理:一个方法里面能同时对两个数据库的数据进行操作的主要内容,如果未能解决你的问题,请参考以下文章