zoukankan      html  css  js  c++  java
  • springboot 多数据源配置

    配置多数据源,需要自己编写对应的DataSource等bean ,且多个数据源,必须设置默认数据库

    1.配置默认数据库 (如果有mybatis xml配置文件,需要在

    SqlSessionFactory 的
    bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                    .getResources("classpath:com/domain/dao/mybatis-mapper/*Mapper.xml"));
    中进行指定

    @Configuration
    @MapperScan(basePackages = "com.domain.dao.datasourceA", sqlSessionTemplateRef = "daoSqlSessionTemplate")
    public class DaoA {
    
        @Bean(name = "dao")
        @ConfigurationProperties(prefix = "spring.datasource.daoA")
        @Primary
        public DataSource testDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean(name = "daoSqlSessionFactory")
        @Primary
        public SqlSessionFactory testSqlSessionFactory(@Qualifier("dao") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            bean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
            bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                    .getResources("classpath:com/domain/dao/mybatis-mapper/*Mapper.xml"));
            //如果不同的数据源,有对应的xml ,使用上面的方法进行设置xml位置
            return bean.getObject();
        }
    
        @Bean(name = "daoTransactionManager")
        @Primary
        public DataSourceTransactionManager testTransactionManager(@Qualifier("dao") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
        }
    
        @Bean(name = "daoSqlSessionTemplate")
        @Primary
        public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("daoSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    
    }
    

     2.其他数据库配置,多个数据源剩下的都用这种配置

    Configuration
    @MapperScan(basePackages = "com.domain.dao.datasourceB", sqlSessionTemplateRef = "BSqlSessionTemplate")
    public class DaoB {
    
        @Bean(name = "B")
        @ConfigurationProperties(prefix = "spring.datasource.daoB")
        public DataSource testDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean(name = "BSqlSessionFactory")
        public SqlSessionFactory testSqlSessionFactory(@Qualifier("B") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            bean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
            bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                    .getResources("classpath*:com/domain/B/mybatis-mapper/*Mapper.xml"));
            return bean.getObject();
        }
    
        @Bean(name = "BTransactionManager")
        public DataSourceTransactionManager testTransactionManager(@Qualifier("B") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
        }
    
        @Bean(name = "BSqlSessionTemplate")
        public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("BSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    
    }
    

     3数据库连接配置,注意不同的配置,需要对应到Datasource的

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

    Yaml配置

    spring:
    datasource:
    daoA:
    jdbc-url: jdbc:mysql://XXXX:8001/a?Unicode=true&characterEncoding=UTF-8
    username: aa
    password: aa
    driver-class-name: com.mysql.jdbc.Driver
    daoB:
    jdbc-url: jdbc:mysql://xxxx:8001/b?Unicode=true&characterEncoding=UTF-8
    username: bb
    password: bb
    driver-class-name: com.mysql.jdbc.Driver
    Application.properties 配置
    @ConfigurationProperties(prefix = "spring.datasource.hikari.daoB")
    spring.datasource.hikari.daoA.jdbc-url=jdbc:mysql://127.0.0.1:3306/a?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    spring.datasource.hikari.daoA.username=root
    spring.datasource.hikari.daoA.password=password
    spring.datasource.hikari.daoA.driver-class-name=com.mysql.cj.jdbc.Driver

    spring.datasource.hikari.daoB.jdbc-url=jdbc:mysql://127.0.0.1:3306/b?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    spring.datasource.hikari.daoB.username=root
    spring.datasource.hikari.daoB.password=password
    spring.datasource.hikari.daoB.driver-class-name=com.mysql.cj.jdbc.Driver

     

  • 相关阅读:
    continue语句及小案例
    break语句和break版猜数字游戏
    python 用while语句打印99乘法表
    python2中引入python3中print函数的语法的语句
    【猜数字 小游戏】
    【while循环】
    代码块和缩进
    使用vs2015编写c语言的方法
    This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details
    矩阵相乘法则和技巧
  • 原文地址:https://www.cnblogs.com/BigWrite/p/13864591.html
Copyright © 2011-2022 走看看