数据源配置

本文介绍了如何配置多数据源,包括DataSource、SqlSessionFactory、DataSourceTransactionManager和SqlSessionTemplate。在配置过程中,特别强调了在存在多个数据源时指定Primary的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    配置的内容有:DataSource, SqlSessionFactory, DataSourceTransactionManager和SqlSessionTemplate。多数据源的情况下,需要指定Primary。

@Configuration
//basePackages:mapper接口类所在的包路径
@MapperScan(basePackages = "com.yh.dwdatalink.common.dal.mysqldatalink.mapper", sqlSessionTemplateRef  = "datalinkSqlSessionTemplate")
public class DataSouceDatalinkConfig {

    private final String mybatisConfig = "classpath:mybatis/mysql-datalink-mybatis-config.xml";
    private final String sqlmap = "classpath:sqlmap/mysqldatalink/*.xml";

    @Bean(name = "datalinkDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.datalink")
    @Primary
    public DataSource datalinkDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "datalinkSqlSessionFactory")
    @Primary
    public SqlSessionFactory datasourcelinkSqlSessionFactory(@Qualifier("datalinkDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setConfigLocation(new PathMatchingResourcePatternResolver().getResource(mybatisConfig));
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(sqlmap));
        bean.setDataSource(dataSource);
        //保证jar模式运行
        bean.setVfs(SpringBootVFS.class);
        return bean.getObject();
    }

    @Bean(name = "datalinkTransactionManager")
    @Primary
    public DataSourceTransactionManager datalinkTransactionManager(@Qualifier("datalinkDataSource") DataSource dataSource) {
         DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource);
         System.out.println("no primary: " + dataSourceTransactionManager);
         return dataSourceTransactionManager;
    }

    @Bean(name = "datalinkSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate datalinkSqlSessionTemplate(@Qualifier("datalinkSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        SqlSessionTemplate sqlSessionTemplate =  new SqlSessionTemplate(sqlSessionFactory);
        return sqlSessionTemplate;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值