spring boot多数据源的使用

1.配置

主数据源配置

@Configuration
@MapperScan(basePackages = "com.hikvision.js.hagzvisual.mapper.master",
        sqlSessionTemplateRef = "masterSqlSessionTemplate")
public class MasterDataSourceConfig {

    public static final String MasterDataSource = "masterDataSource";

    // 获取映射文件所在的路径
    @Value("${srping.mybatis.matser.path}")
    private String masterMapperPath;

    /**
     * @return javax.sql.DataSource
     * @Description: 根据配置文件,注入数据源
     * @Param []
     */
    @Bean(name = MasterDataSource)
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource masterDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * @return org.apache.ibatis.session.SqlSessionFactory
     * @Description: 注入SqlSessionFactory,指定数据源和映射文件路径
     * @Param [dataSource]
     */
    @Bean(name = "masterSqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier(MasterDataSource) DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources(masterMapperPath);
        sqlSessionFactoryBean.setMapperLocations(resources);
        return sqlSessionFactoryBean.getObject();
    }

    /**
     * @return org.springframework.jdbc.datasource.DataSourceTransactionManager
     * @Description: 注入DataSourceTransactionManager事物管理器
     * @Param [dataSource]
     */
    @Bean(name = "masterTransactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(@Qualifier(MasterDataSource) DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    /**
     * @return org.mybatis.spring.SqlSessionTemplate
     * @Description: 注入SqlSessionTemplate模板
     * @Param [sqlSessionFactory]
     */
    @Bean(name = "masterSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

从数据源配置


@Configuration
@MapperScan(basePackages = "com.hikvision.js.hagzvisual.mapper.slaver",
        sqlSessionTemplateRef = "slaverSqlSessionTemplate")
public class SlaverDataSourceConfig {


    public static final String SlaverDataSource = "slaverDataSource";

    // 获取映射文件所在的路径
    @Value("${pg.mybatis.slaver.path}")
    private String slaverMapperPath;

    /**
     * @return javax.sql.DataSource
     * @Description: 根据配置文件,注入数据源
     * @Param []
     */
    @Bean(name = SlaverDataSource)
    @ConfigurationProperties(prefix = "pg.datasource")
    public DataSource slaverDataSource() {


        return DataSourceBuilder.create().build();
    }

    /**
     * @return org.apache.ibatis.session.SqlSessionFactory
     * @Description: 注入SqlSessionFactory,指定数据源和映射文件路径
     * @Param [dataSource]
     */
    @Bean(name = "slaverSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier(SlaverDataSource) DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources(slaverMapperPath);
        sqlSessionFactoryBean.setMapperLocations(resources);
        return sqlSessionFactoryBean.getObject();
    }

    /**
     * @return org.springframework.jdbc.datasource.DataSourceTransactionManager
     * @Description: 注入DataSourceTransactionManager事物管理器
     * @Param [dataSource]
     */
    @Bean(name = "slaverTransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier(SlaverDataSource) DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    /**
     * @return org.mybatis.spring.SqlSessionTemplate
     * @Description: 注入SqlSessionTemplate模板
     * @Param [sqlSessionFactory]
     */
    @Bean(name = "slaverSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("slaverSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

application.properties配置文件中的配置

#----------------本组件数据库配置----------------
spring.datasource.url=jdbc:postgresql://ip:port/postgres
spring.datasource.username=postgres
spring.datasource.password=pwdxxx
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.druid.max-active=200
spring.datasource.druid.max-wait=20000
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
mybatis.mapper-locations=classpath:mapper/master/*.xml
#----------------本组件数据库配置----------------

#---------------外部pg数据库配置-------------------------
pg.datasource.jdbc-url=jdbc:postgresql://ip:port/postgres
pg.datasource.username=postgres
pg.datasource.password=pwdxxx
pg.datasource.driver-class-name=org.postgresql.Driver
pg.datasource.druid.max-active=200
pg.datasource.druid.max-wait=20000
pg.datasource.druid.initial-size=1
pg.datasource.druid.min-idle=1
pg.mybatis.slaver.path=classpath:mapper/slaver/*.xml
#---------------外部pg数据库配置-------------------------

mapper.xml结构

 

使用

直接使用相应的mapper即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值