【sprint】数据库多数据源

两个项目间数据同步的需求,需要同时操作多个库多需求

扫描数据源

component中创建不同的文件
DataSourceDefault

@Configuration
@MapperScan(basePackages = {"com.xxx.dao"}, sqlSessionFactoryRef = "sqlSessionFactory2")
public class DataSourceDefault {

    @Bean(name = "dataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean
    @Primary
    public SqlSessionFactory sqlSessionFactory2(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
        return factoryBean.getObject();
    }

    @Bean
    @Primary
    public SqlSessionTemplate sqlSessionTemplate2(@Qualifier("dataSource") DataSource dataSource) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory2(dataSource));
    }
}

DataSourceReport

@Configuration
@MapperScan(basePackages = {"com.xxx.daoReport"}, sqlSessionFactoryRef = "sqlSessionFactory1")
public class DataSourceReport {

    @Bean(name = "reportDataSource")
    @ConfigurationProperties(prefix = "report.datasource")
    public DataSource dataSourceReport() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory1(DataSource reportDataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(reportDataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapperReport/*.xml"));
        return factoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate1(@Qualifier("reportDataSource") DataSource dataSourceReport) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory1(dataSourceReport));
    }
}

配置中心配置不同数据源的配置信息,在配置时根据数据源配置的前缀进行区分
如上面两个数据源

@ConfigurationProperties(prefix = "spring.datasource")
@ConfigurationProperties(prefix = "report.datasource")

dao文件

不同数据源的dao文件创建在不同的文件夹下
在这里插入图片描述

xml文件

不同数据源的mapper文件创建在不同的文件夹中
在这里插入图片描述
在xml文件中指明数据源

<mapper namespace="com.xxx.daoReport.ReportSampleDao">

...

</mapper>

这样就可以在简易的进行不同数据库数据源的读取了

你可能感兴趣的:(#,java)