SpringBoot+MyBatis集成多数据库

1 写配数据库置类1
dbConfig.DataSourceConfigCommon

package XXX.api.dbConfig;

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.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

//表示这个类为一个配置类
@Configuration

// 配置mybatis的接口类放的地方
@MapperScan(basePackages = "XXX.api.mapper.common", sqlSessionFactoryRef = "commonSqlSessionFactory")
public class DataSourceConfigCommon {
    // 将这个对象放入Spring容器中

    @Bean(name = "commonDataSource")
    // 表示这个数据源是默认数据源
//    @Primary
    // 读取application.properties中的配置参数映射成为一个对象
    // prefix表示参数的前缀
    @ConfigurationProperties(prefix = "spring.datasource.common")
    public DataSource getDateSourceCommon() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "commonSqlSessionFactory")
    // 表示这个数据源是默认数据源
//    @Primary
    // @Qualifier表示查找Spring容器中名字为test1DataSource的对象
    public SqlSessionFactory commonSqlSessionFactory(@Qualifier("commonDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                // 设置mybatis的xml所在位置
                new PathMatchingResourcePatternResolver().getResources("classpath:cn/longmaster/slss/api/mapper/xml/*.xml"));
        return bean.getObject();
    }
    @Bean("commonSqlSessionTemplate")
    // 表示这个数据源是默认数据源
//    @Primary
    public SqlSessionTemplate commonSqlSessionTemplate(
            @Qualifier("commonSqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

}

2 写配数据库置类2
dbConfig.DataSourceConfigYLSBGL

package XXX.api.dbConfig;

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.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

//表示这个类为一个配置类
@Configuration

// 配置mybatis的接口类放的地方
@MapperScan(basePackages = "XXX.api.mapper.ylsbgl", sqlSessionFactoryRef = "ylsbglSqlSessionFactory")
public class DataSourceConfigYLSBGL {
    // 将这个对象放入Spring容器中

    @Bean(name = "ylsbglDataSource")
    // 表示这个数据源是默认数据源
//    @Primary
    // 读取application.properties中的配置参数映射成为一个对象
    // prefix表示参数的前缀
    @ConfigurationProperties(prefix = "spring.datasource.ylsbgl")
    public DataSource getDateSourceYlsbgl() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "ylsbglSqlSessionFactory")
    // 表示这个数据源是默认数据源
//    @Primary
    // @Qualifier表示查找Spring容器中名字为test1DataSource的对象
    public SqlSessionFactory ylsbglSqlSessionFactory(@Qualifier("ylsbglDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                // 设置mybatis的xml所在位置
                new PathMatchingResourcePatternResolver().getResources("classpath:cn/longmaster/slss/api/mapper/xml/*.xml"));
        return bean.getObject();
    }
    @Bean("ylsbglSqlSessionTemplate")
    // 表示这个数据源是默认数据源
//    @Primary
    public SqlSessionTemplate ylsbglSqlSessionTemplate(
            @Qualifier("ylsbglSqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

}

3 配置文件配置

spring:
  datasource:
    common:
      name: common
      jdbc-url: jdbc:mysql://*.*.*.*:3306/db_XXX?useUnicode=true&&characterEncoding=utf-8 #注意设置编码格式 #url
      username: XXX #用户名
      password: *** #密码
      driver-class-name: com.mysql.cj.jdbc.Driver #数据库链接驱动
   
    ylsbgl:
      driver-class-name: oracle.jdbc.driver.OracleDriver
      name: ylsbgl
      jdbc-url: jdbc:oracle:thin:@**.*.*.*:1521/ORCL  #url
      username: XXX #用户名
      password: *** #密码

4 在XXX.api.mapper.ylsbgl 和 XXX.api.mapper.common 下写对应的Mapper 即可

你可能感兴趣的