在一些项目中需要同时操作两个数据库,比如定时给数据库做数据同步,将A数据库中的数据复制到B中。
yml配置
spring: datasource: db1: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=db_EQMSData username: sa password: rollshop db2: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=db_EQMSData_02 username: sa password: rollshop
sqlite数据库配置
<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.21.0.1</version> </dependency>
driver-class-name: org.sqlite.JDBC url: jdbc:sqlite::resource:static/sqlite/db_C808_spot_check_test_sqlite.db username: password:
config配置
db1数据库(主库)
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = "com.electric.dao.db1", sqlSessionTemplateRef = "db01SqlSessionTemplate") public class DataSource01Config { @Bean(name = "db01DataSource") @ConfigurationProperties(prefix = "spring.datasource.db1") @Primary public DataSource db01DataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(name = "db01SqlSessionFactory") @Primary public SqlSessionFactory db01SqlSessionFactory(@Qualifier("db01DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // 注意,这里是getResources()方法,不是getResource() bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/temp/dao/db1/*.xml")); return bean.getObject(); } @Bean(name = "db01TransactionManager") @Primary public DataSourceTransactionManager db01TransactionManager(@Qualifier("db01DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "db01SqlSessionTemplate") @Primary public SqlSessionTemplate db01SqlSessionTemplate(@Qualifier("db01SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } }
db2数据库(从库)
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.type.JdbcType; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.boot.autoconfigure.MybatisProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; import java.io.IOException; import java.util.Optional; import java.util.stream.Stream; @Configuration @MapperScan(basePackages = "com.electric.dao.db2", sqlSessionTemplateRef = "db02SqlSessionTemplate") public class DateSource02Config { @Autowired private MybatisProperties properties; @Bean(name = "db02DataSource") @ConfigurationProperties(prefix = "spring.datasource.db2") public DataSource db02DataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(name = "db02SqlSessionFactory") public SqlSessionFactory db02SqlSessionFactory(@Qualifier("db02DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // 注意,这里是getResources()方法,不是getResource() bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/temp/dao/db2/*.xml")); return bean.getObject(); } @Bean(name = "db02TransactionManager") public DataSourceTransactionManager testTransactionManager(@Qualifier("db02DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "db02SqlSessionTemplate") public SqlSessionTemplate db02SqlSessionTemplate(@Qualifier("db02SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } }
热门文章
- 动物疫苗的类型包括(动物疫苗的种类和制备原理)
- 2月19日 - 最高速度20.6M/S,2025年Surfboard每天更新免费节点订阅链接,干净IP机场推荐
- 重庆宠物领养中心官网招聘电话号码(重庆宠物领养中心官网招聘电话号码是多少)
- 不宜养猫的4个属相男人是什么(不宜养猫的4个属相男人是什么星座)
- 宠物领养市场经济可行性分析 宠物领养市场经济可行性分析报告
- 2月9日 - 最高速度22.1M/S,2025年Surfboard每天更新免费节点订阅链接,干净IP机场推荐
- 中国兽药前十强企业名单(中国兽药前十强企业名单公布)
- 宠康宠物诊所(宠康宠物诊所怎么样)
- 兽医大院地址(兽医中心)
- 2月27日 - 最高速度20.1M/S,2025年Surfboard每天更新免费节点订阅链接,干净IP机场推荐