Spring Boot集成Mybatis实现多数据源连接

以两个数据源为例,application.properties有两组数据库配置,再配置对应的Config与mapper,各自处理各自的业务。

1.配置pom.xml依赖

首先配置好jdbc、mybatis的依赖:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
    </parent>
    <dependencies>
        <!--Spring Boot依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.36</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.3</version>
        </dependency>
        ......
    </dependencies>

2.配置application.properties

#主数据库
spring.datasource.gm.jdbcUrl=jdbc:mysql://xx.xx.xx.xx/gmtools?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
spring.datasource.gm.username=xxxx
spring.datasource.gm.password=xxxx
spring.datasource.gm.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.bi.jdbcUrl=jdbc:mysql://xx.xx.xx.xx/bitools?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
spring.datasource.bi.username=xxxx
spring.datasource.bi.password=xxxx
spring.datasource.bi.driver-class-name=com.mysql.jdbc.Driver

3.数据库连接

主数据库连接通过 @Primary 进行注解:

@Configuration
// 扫描 Mapper 接口并容器管理
//@EnableTransactionManagement //如果mybatis中service实现类中加入事务注解,需要此处添加该注解
@MapperScan(basePackages = "com.kodgames.gmtools.dao.gm", sqlSessionFactoryRef = "gmSqlSessionFactory")
public class GmDataDaoConfig {
    @Bean(name = "gmDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.gm") // application.properteis中对应属性的前缀
    public DataSource gmDataSource() {
        return DataSourceBuilder.create().type(com.zaxxer.hikari.HikariDataSource.class).build();
    }

    @Bean
    @Primary
    public SqlSessionFactory gmSqlSessionFactory(@Qualifier("gmDataSource") DataSource gmDataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(gmDataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/GmDataDaoMapper.xml"));
        return factoryBean.getObject();
    }
}

从数据库连接:

@Configuration
@MapperScan(basePackages = "com.kodgames.gmtools.dao.bi", sqlSessionFactoryRef = "biSqlSessionFactory")
public class BIDataDaoConfig {
    @Bean(name = "biDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.bi") // application.properteis中对应属性的前缀
    public DataSource biDataSource() {
        return DataSourceBuilder.create().type(com.zaxxer.hikari.HikariDataSource.class).build();
    }

    @Bean
    public SqlSessionFactory biSqlSessionFactory(@Qualifier("biDataSource") DataSource biDataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(biDataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/BIDataDaoMapper.xml"));
        return factoryBean.getObject();
    }
}

如果再增加一个数据源就得从头到尾增加一遍。

猜你喜欢

转载自blog.csdn.net/qq_36526703/article/details/81778379