• JAVA开发:SpringBoot多数据源配置


    整体项目搭建:

     数据源1:DataSource1Config

    package com.test.config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    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.boot.jdbc.DataSourceBuilder;
    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.test.mapper.db1", sqlSessionTemplateRef = "db1SqlSessionTemplate")
    public class DataSource1Config {
    
        /**
         * 生成数据源.  @Primary 注解声明为默认数据源
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.datasource.db1")
        @Primary
        public DataSource db1DataSource() {
    //        return DataSourceBuilder.create().build();
            //要返回:return new DruidDataSource() 否则不使用Druid链接池
            return new DruidDataSource();
        }
    
        @Bean(name = "db1SqlSessionFactory")
        @Primary
        public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db1/*.xml"));
            return bean.getObject();
        }
    
        /**
         * 配置事务管理
         */
        @Primary
        @Bean(name = "db1TransactionManager")
        public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
        }
    
        @Bean(name = "db1SqlSessionTemplate")
        @Primary
        public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    
    }
    View Code

    数据源2: DataSource2Config

    package com.test.config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    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.boot.jdbc.DataSourceBuilder;
    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.test.mapper.db2", sqlSessionTemplateRef = "db2SqlSessionTemplate")
    public class DataSource2Config {
    
        /**
         * 生成数据源.  @Primary 注解声明为默认数据源
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.datasource.db2")
        @Primary
        public DataSource db2DataSource() {
    //        return DataSourceBuilder.create().build();
            //要返回:return new DruidDataSource() 否则不使用Druid链接池
            return new DruidDataSource();
        }
    
        @Bean(name = "db2SqlSessionFactory")
        @Primary
        public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db2/*.xml"));
            return bean.getObject();
        }
    
        /**
         * 配置事务管理
         */
        @Primary
        @Bean(name = "db2TransactionManager")
        public DataSourceTransactionManager db2TransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
        }
    
        @Bean(name = "db2SqlSessionTemplate")
        @Primary
        public SqlSessionTemplate db2SqlSessionTemplate(@Qualifier("db2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    
    }
    View Code

    application.properties

    ###DB1数据库####
    spring.datasource.db1.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.db1.username=root
    spring.datasource.db1.password=root
    spring.datasource.db1.url=jdbc:mysql://192.1.177:3306/db1?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    spring.datasource.db1.type=com.alibaba.druid.pool.DruidDataSource
    
    
    ######db2数据库#####
    spring.datasource.db2.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.db2.username=root
    spring.datasource.db2.password=root
    spring.datasource.db2.url=jdbc:mysql://192.1.161.177:3306/db2?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    spring.datasource.db2.type=com.alibaba.druid.pool.DruidDataSource

    maven依赖:

     <dependency>
              <groupId>org.mybatis.spring.boot</groupId>
              <artifactId>mybatis-spring-boot-starter</artifactId>
              <version>2.1.2</version>
          </dependency>
          <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>druid-spring-boot-starter</artifactId>
              <version>1.1.16</version>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
  • 相关阅读:
    棋盘型动态规划 之 CODE[VS] 1220 数字三角形
    棋盘型动态规划 之 CODE[VS] 1219 骑士游历 1997年
    棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
    棋盘型动态规划 之 CODE[VS] 1010 过河卒 2002年NOIP全国联赛普及组
    [实验]自举?只不过是电容和二极管捣的乱
    [嵌入式]I2C协议指东
    [语法]C语言中二维数组做输入参数
    深入类方法。
    今天周六祝大家休息开心,我还在奋斗....
    我们一起来一把.....现在学习真的好累,一天下来脑袋要炸
  • 原文地址:https://www.cnblogs.com/weigy/p/12857531.html
Copyright © 2020-2023  润新知