2021-12-23

package com.us.example.util;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = PrimaryDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "PrimarySqlSessionFactory")
public class PrimaryDataSourceConfig {

    // 精确到 master 目录,以便跟其他数据源隔离
    static final String PACKAGE = "com.us.example.primary";
    static final String MAPPER_LOCATION = "classpath:primary/*.xml";

    @Value("${primary.datasource.url}")
    private String url;

    @Value("${primary.datasource.username}")
    private String user;

    @Value("${primary.datasource.password}")
    private String password;

    @Value("${primary.datasource.driverClassName}")
    private String driverClass;

    @Bean(name = "primaryDataSource")
    public DataSource primaryDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean(name = "primaryTransactionManager")
    public DataSourceTransactionManager primaryTransactionManager() {
        return new DataSourceTransactionManager(primaryDataSource());
    }

    @Bean(name = "PrimarySqlSessionFactory")
    public SqlSessionFactory masterSqlSessionFactory(
            @Qualifier("primaryDataSource") DataSource primaryDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(primaryDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(PrimaryDataSourceConfig.MAPPER_LOCATION));
        String resource="classpath:mybatis-config.xml";
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setConfigLocation(resolver.getResource(resource));
        return sessionFactory.getObject();
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 主持人提问的逻辑化、系统化,深挖化,具体化,帮助智者君精确推导,这种风格太妙了。 2. 知识要在自己头脑中结...
    莫忘小寒阅读 161评论 0 0
  • 今天是什么日子 起床:8.00 就寝:11.00 天气:晴天 心情:很郁闷 纪念日:没有 叫我起床的不是闹钟是梦想...
    L95阅读 109评论 0 0
  • 今天,妈妈周年忌日。 前些天,梦见妈妈推开窗户,背对着我说,快点跑,外面有两派人打架打得很凶。我说,干嘛不走门口要...
    幕色夕晨阅读 213评论 0 0
  • 受美股收高影响,市场缩量高开后低走,主要指数水坎弱势盘低走势,创业板指风巽略强,市场上涨不足30%,大部分股票处于...
    忘川秋水阅读 120评论 0 0
  • 空落的夜,孤寂的快要将人毁灭。夜里的黑,仿佛与光明消泯了边界。这是悲情的冬夜,笔下的墨水,生不出温暖的文字。 远梦...
    紫竹深深阅读 150评论 0 0