spring boot + mybatis配置多数据源

 

#数据源 admin

spring.datasource.jdbc-url = 
spring.datasource.username = 
spring.datasource.password = 
spring.datasource.hikari.minimum-idle = 5
spring.datasource.hikari.maximum-pool-size = 50
spring.datasource.hikari.driver-class-name = com.mysql.jdbc.Driver


#数据源 search
search.datasource.jdbc-url =
search.datasource.username = 
search.datasource.password = 
search.datasource.hikari.minimum-idle = 5
search.datasource.hikari.maximum-pool-size = 50
search.datasource.hikari.driver-class-name = com.mysql.jdbc.Driver

mybatis.mapper-locations = classpath*:mapper/*.xml
mybatis.type-aliases-package = com.xxx.xxx.model

 

每个数据源对应的配置文件

1、admin

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.beans.factory.annotation.Value;
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.xxx.xxx.admin.mapper.admin"}, sqlSessionTemplateRef = "sqlSessionTemplate")
public class AdminDataSourceConfig {

    /**
     * xml配置路径
     */
    @Value("${mybatis.mapper-locations}")
    private String mapperLocations;

    /**
     * model路径
     */
    @Value("${mybatis.type-aliases-package}")
    private String typeAliasesPackage;

    /**
     * 获取admin数据源
     * @return DataSource
     */
    @Bean(name = "dataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    @Primary
    public DataSource getDataSource() {
        return DataSourceBuilder.create().build();
    }


    /**
     * 获取admin数据源的sqlSessionFactory
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean(name = "sqlSessionFactory")
    @Primary
    public SqlSessionFactory getSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
        //创建SqlSessionFactoryBean
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
        //设置DataSource
        sqlSessionFactory.setDataSource(dataSource);
        //添加xml路径
        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
        //添加model路径
        sqlSessionFactory.setTypeAliasesPackage(typeAliasesPackage);

        return sqlSessionFactory.getObject();
    }


    /**
     * admin数据源事务管理器
     * @param dataSource
     * @return
     */
    @Bean(name = "transactionManager")
    @Primary
    public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("dataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    /**
     * admin 数据源 sqlSessionTemplate
     * @param sqlSessionFactory
     * @return
     */
    @Bean(name = "sqlSessionTemplate")
    @Primary
    public SqlSessionTemplate getSqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

2、search

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.beans.factory.annotation.Value;
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

/**
 * Created with IntelliJ IDEA.
 *
 * @author: liuqi
 * @date: 2019/7/18
 * @time: 11:23
 * @description: admin数据源配置文件
 */
@Configuration
@MapperScan(basePackages = {"com.jiutong.logistics.admin.mapper.search"}, sqlSessionTemplateRef = "searchSqlSessionTemplate")
public class SearchDataSourceConfig {

    /**
     * xml配置路径
     */
    @Value("${mybatis.mapper-locations}")
    private String mapperLocations;

    /**
     * model路径
     */
    @Value("${mybatis.type-aliases-package}")
    private String typeAliasesPackage;

    /**
     * 获取search数据源
     * @return DataSource
     */
    @Bean(name = "searchDataSource")
    @ConfigurationProperties(prefix = "search.datasource")
    public DataSource getDataSource() {
        return DataSourceBuilder.create().build();
    }


    /**
     * 获取search数据源的sqlSessionFactory
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean(name = "searchSqlSessionFactory")
    public SqlSessionFactory getSqlSessionFactory(@Qualifier("searchDataSource") DataSource dataSource) throws Exception {
        //创建SqlSessionFactoryBean
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
        //设置DataSource
        sqlSessionFactory.setDataSource(dataSource);
        //添加xml路径
        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
        //添加model路径
        sqlSessionFactory.setTypeAliasesPackage(typeAliasesPackage);

        return sqlSessionFactory.getObject();
    }


    /**
     * search数据源事务管理器
     * @param dataSource
     * @return
     */
    @Bean(name = "searchTransactionManager")
    public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("searchDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    /**
     * search 数据源 sqlSessionTemplate
     * @param sqlSessionFactory
     * @return
     */
    @Bean(name = "searchSqlSessionTemplate")
    public SqlSessionTemplate getSqlSessionTemplate(@Qualifier("searchSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }



}

mapper文件分开写

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值