在一些项目中需要同时操作两个数据库,比如定时给数据库做数据同步,将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);
}
}
声明:本站所有文章,如无特殊说明或标注,均为网络收集发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。