SpringBootMyBatis集成多数据库

30次阅读

共计 4031 个字符,预计需要花费 11 分钟才能阅读完成。

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&amp&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 即可

正文完
 0