美文网首页
SpringBoot配置MySQL多数据源

SpringBoot配置MySQL多数据源

作者: 想象之中丶意料之外 | 来源:发表于2020-11-17 16:49 被阅读0次

    1、先配置数据库连接文件

    在连接文件中,设置多个数据库连接

    @Configuration
    public class DataSourceConfig {
        @Primary    // 设置为主数据库
        @Bean(name="AAA")
        @ConfigurationProperties(prefix = "spring.datasource.AAA")
        public DataSource coldChainReadDataSource(){
            return DataSourceBuilder.create(DruidDataSource.class.getClassLoader()).build();  // 这里使用了阿里巴巴的数据库连接池Druid
        }
    
        @Bean(name="BBB")
        @ConfigurationProperties(prefix = "spring.datasource.BBB")
        public DataSource coldChainWriteDataSource(){
            return DataSourceBuilder.create(DruidDataSource.class.getClassLoader()).build();
        }
    }
    

    2、AAA数据库连接配置文件

    @Configuration
    @MapperScan(basePackages = {"com.xx.xx.xx.AAA"},sqlSessionTemplateRef = "loadrSqlSessionTemplate")
    public class MyBatisLoadReadConfig {
        @Autowired
        @Qualifier("AAA")  // 其他都一样,只要点在这里,加载不同的数据连接配置
        private DataSource dataSource;
     
        @Value("${spring.datasource.AAA.jdbcUrl}")
        private String jdbcUrl;
        
        @Bean
        public SqlSessionFactory loadrSqlSessionFactory() throws Exception{
            SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
            sqlSessionFactoryBean.setDataSource(dataSource);
            sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
            PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            Resource[] resource=resolver.getResources("classpath:com/xx/xx/xx/AAA/*/*.xml");    // 配置xml路径
            sqlSessionFactoryBean.setMapperLocations(resource);
            sqlSessionFactoryBean.setTypeAliasesPackage("com.xx.xx.model"); // 配置数据返回实体包路径
            sqlSessionFactoryBean.setPlugins(new Interceptor[]{new MybatisInterceptor(jdbcUrl)});    // 设置数据库sql检测插件,主要用户sql检测的。不需要sql中间件的,可以不用设置
            return sqlSessionFactoryBean.getObject();
        }
     
        @Bean
        public SqlSessionTemplate loadrSqlSessionTemplate() throws Exception{
            SqlSessionTemplate sqlSessionTemplate=new SqlSessionTemplate(loadrSqlSessionFactory());
            return sqlSessionTemplate;
        }
    
        // 事务管理器
        @Bean(name = "loadrTransactionManager")
        public DataSourceTransactionManager loadrTransactionManager() {
            return new DataSourceTransactionManager(dataSource);
        }
    }
    

    3、BBB数据库连接配置文件

    @Configuration
    @MapperScan(basePackages = {"com.xx.xx.xx.BBB"},sqlSessionTemplateRef = "loadrSqlSessionTemplate")
    public class MyBatisLoadReadConfig {
        @Resource(name = "BBB")
        private DataSource dataSource;
     
        @Value("${spring.datasource.BBB.jdbcUrl}")
        private String jdbcUrl;
        
        @Bean
        public SqlSessionFactory loadrSqlSessionFactory() throws Exception{
            SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
            sqlSessionFactoryBean.setDataSource(dataSource);
            sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
            PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            Resource[] resource=resolver.getResources("classpath:com/xx/xx/xx/BBB/*/*.xml");    // 配置xml路径
            sqlSessionFactoryBean.setMapperLocations(resource);
            sqlSessionFactoryBean.setTypeAliasesPackage("com.xx.xx.model"); // 配置数据返回实体包路径
            sqlSessionFactoryBean.setPlugins(new Interceptor[]{new MybatisInterceptor(jdbcUrl)});    // 设置数据库sql检测插件,主要用户sql检测的
            return sqlSessionFactoryBean.getObject();
        }
     
        @Bean
        public SqlSessionTemplate loadrSqlSessionTemplate() throws Exception{
            SqlSessionTemplate sqlSessionTemplate=new SqlSessionTemplate(loadrSqlSessionFactory());
            return sqlSessionTemplate;
        }
    
        // 事务管理器
        @Bean(name = "loadrTransactionManager")
        public DataSourceTransactionManager loadrTransactionManager() {
            return new DataSourceTransactionManager(dataSource);
        }
    }
    

    =============再多的,以此类推===============

    相关文章

      网友评论

          本文标题:SpringBoot配置MySQL多数据源

          本文链接:https://www.haomeiwen.com/subject/lkzxiktx.html