tkMybatis多数据源配置


import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
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 tk.mybatis.spring.annotation.MapperScan;

import javax.sql.DataSource;

/**
 * 数据源初始化
 *
 */
@Configuration
@MapperScan(basePackages = {"com.xxxx.xxx.dds.mapper"},
        sqlSessionTemplateRef = "sqlSessionTemplateDdsDataSource",markerInterface = BaseMapper.class)
public class DdsDataSourceConfig {
    /**
     * 自动读取DataSource配置文件
     *
     * @return
     */
    @Primary
    @Bean(name = "ddsProperties")
    @ConfigurationProperties("spring.datasource.master")
    public DataSourceProperties ddsProperties() {
        return new DataSourceProperties();
    }


    /**
     * 添加@Primary注解,设置默认数据源,事务管理器
     *
     * @return
     */
    @Primary
    @Bean(name = "ddsDataSource")
    public DataSource ddsDataSource(@Qualifier("ddsProperties") DataSourceProperties properties) {
        DataSource dataSource = properties.initializeDataSourceBuilder()
                .type(DruidDataSource.class).build();
        return dataSource;
    }

    @Primary
    @Bean(name = "sqlSessionFactoryDdsDataSource")
    public SqlSessionFactory sqlSessionFactoryDdsDataSource(
            @Qualifier("ddsDataSource") DataSource ddsDataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
        configuration.setMapUnderscoreToCamelCase(true);
        factoryBean.setConfiguration(configuration);

        // 使用ddsDataSource数据源, 连接ddsDataSource库
        factoryBean.setDataSource(ddsDataSource);

        //下边两句仅仅用于*.xml文件,如果整个持久层操作不需要使用到xml文件的话(只用注解就可以搞定),则不加
        //指定entity和mapper。xml的路径
        factoryBean.setTypeAliasesPackage("com.xxx.xxx.dds.entity");
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*Mapper.xml"));
        return factoryBean.getObject();
    }

    @Primary
    @Bean("sqlSessionTemplateDdsDataSource")
    public SqlSessionTemplate sqlSessionTemplateDdsDataSource(
            @Qualifier("sqlSessionFactoryDdsDataSource") SqlSessionFactory sqlSessionFactoryDdsDataSource) throws Exception {

        //使用注解中配置的Factory
        SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryDdsDataSource);
        return template;
    }
}


import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import tk.mybatis.spring.annotation.MapperScan;


import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = {"com.xxxx.xxx.dds.mapper.master"},
        sqlSessionTemplateRef = "sqlSessionTemplateMasterDataSource",markerInterface = BaseMasterMapper.class)
public class MasterVehicleDataSourceConfig {

    /**
     * 自动读取DataSource配置文件
     * @return
     */
    @Bean(name = "masterProperties")
    @ConfigurationProperties("spring.datasource.master.vehicle")
    public DataSourceProperties masterProperties() {
        return new DataSourceProperties();
    }

    @Bean(name = "masterDataSource")
    public DataSource masterDataSource(@Qualifier("masterProperties") DataSourceProperties properties) {
        DataSource dataSource = properties.initializeDataSourceBuilder()
                .type(DruidDataSource.class).build();
        return dataSource;
    }

    @Bean(name = "sqlSessionFactoryMasterDataSource")
    public SqlSessionFactory sqlSessionFactoryMasterDataSource(
            @Qualifier("masterDataSource")DataSource masterDataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
        configuration.setMapUnderscoreToCamelCase(true);
        factoryBean.setConfiguration(configuration);

        // 使用masterDataSource数据源, 连接masterDataSource库
        factoryBean.setDataSource(masterDataSource);

        //下边两句仅仅用于*.xml文件,如果整个持久层操作不需要使用到xml文件的话(只用注解就可以搞定),则不加
        factoryBean.setTypeAliasesPackage("com.xxx.xxx.dds.entity.master");
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mappers/master/*Mapper.xml"));
        return factoryBean.getObject();
    }

    @Bean("sqlSessionTemplateMasterDataSource")
    public SqlSessionTemplate sqlSessionTemplateMasterDataSource(
            @Qualifier("sqlSessionFactoryMasterDataSource") SqlSessionFactory sqlSessionFactoryMasterDataSource) throws Exception {
        SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryMasterDataSource);
        return template;
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值