最近在做数据的同步,数据来源于sql server,同步到mysql中。所以,需要配置多数据源。不多说,上才艺!!
yml配置文件
spring:
datasource:
mboss:
jdbc-url: jdbc:mysql://************:3306/mdoss_ys?serverTimezone=UTC&characterEncoding=UTF-8
username: ***
password: ***
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
mdk3:
jdbc-url: jdbc:sqlserver://*****************;DatabaseName=AIS20161101115332
username: **
password: **
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
serverTimezone: UTC
这里配置了mysql和sql server。然后建立连接数据源的配置文件。
mysql
@Configuration
@MapperScan(basePackages = {"com.mdoss.materialsale.service.mapper.**", "com.mdoss.logcenter.**"}, sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MybatisDbMbossConfig {
@Primary//主数据源
@Bean(name = "masterDataSource")
@ConfigurationProperties(prefix = "spring.datasource.mboss")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "masterSqlSessionFactory")//会话工厂
public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
return factoryBean.getObject();
}
@Primary
@Bean(name = "masterTransactionManager")//数据库事务
public DataSourceTransactionManager transactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "masterSqlSessionTemplate")//会话模板
@Primary
public SqlSessionTemplate testSqlSessionTemplate(
@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
sql server
@Configuration
@MapperScan(basePackages = "com.mdoss.materialsale.service.mapper.**", sqlSessionFactoryRef = "mdk3SqlSessionFactory")
public class MybatisDbMdk3Config {
@Bean(name = "mdk3DataSource")
@ConfigurationProperties(prefix = "spring.datasource.mdk3")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "mdk3SqlSessionFactory")//会话工厂
public SqlSessionFactory sqlSessionFactory(@Qualifier("mdk3DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTypeAliasesPackage("com.mdoss.materialsale.model.entity.**");
factoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath*:k3Mapper/*.xml"));
return factoryBean.getObject();
}
//@Qualifier("xxx")的含义是告诉他使用哪个DataSource
@Bean(name = "mdk3TransactionManager")//事务
public DataSourceTransactionManager transactionManager(@Qualifier("mdk3DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "mdk3SqlSessionTemplate") //会话模板
public SqlSessionTemplate testSqlSessionTemplate(
@Qualifier("mdk3SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
公司使用的是mybatis,所以还需要创建对应的Mapper文件。
对应实体
在使用时,注意对应路径不要写错就完活了。