两种数据库事务"/>
Springboot 整合MySQL 和 MongoDB 同时支持两种数据库事务
一、配置spirngboot数据源
# mybatis数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=#mongodb数据源,主副使用逗号分隔spring.data.mongodb.uri=mongodb://192.168.10.150:27018,192.168.10.150:27019,192.168.10.150:27020/dev_mongo?replicaSet=rs
spring.data.mongodb.database=dev_mongo
注意:MongoDB如果想支持事务,必须在4.0版本以上,使用副本集。配置参考:
二、配置事务
@Configuration
public class MongoConfig {@Bean(name = "mongoTransactionManager")MongoTransactionManager transactionManager(MongoDbFactory factory){return new MongoTransactionManager(factory);}}
@Configuration
public class MybatisDataSourceConfig {@Bean(name = "mybatisTransactionManager")@Primary //事务默认使用mysql数据库public DataSourceTransactionManager testTransactionManager(@Qualifier("dataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}
}
三、使用
// 使用MongoDB事务,必须加transactionManager @Transactional (transactionManager = "mongoTransactionManager")
@Override
public void batchSaveUpdate() {systemRepository.batchSaveUpdate();
}//使用mybatis事务
@Transactional //(transactionManager = "mybatisTransactionManager")
@Override
public void testMybatisTransactional() {systemUserServicesI.updateByPrimaryKeySelective(SystemUser.builder().id(18).nickName("xiaoming").build());int a = 100/0;}
四、注意事项
不支持同时两个数据库的事务,如果在某个事务中同时操作2个数据库,事务只对当前数据库事务生效,另个不生效
更多推荐
Springboot 整合MySQL 和 MongoDB 同时支持两种数据库事务
发布评论