springboot多数据源配置

本文详细介绍了如何在项目中配置并使用多个数据源,包括MySQL和SQLServer,通过Spring Boot和MyBatis实现数据同步。文章提供了完整的YML配置文件示例及数据源连接、会话工厂、事务管理等关键配置代码。

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

最近在做数据的同步,数据来源于sql server,同步到mysql中。所以,需要配置多数据源。不多说,上才艺!!

yml配置文件
spring:
  datasource:
    mboss:
      jdbc-url: jdbc:mysql://************:3306/mdoss_ys?serverTimezone=UTC&characterEncoding=UTF-8
      username: ***
      password: ***
      type: com.alibaba.druid.pool.DruidDataSource
      driverClassName: com.mysql.cj.jdbc.Driver
    mdk3:
      jdbc-url: jdbc:sqlserver://*****************;DatabaseName=AIS20161101115332
      username: **
      password: **
      type: com.alibaba.druid.pool.DruidDataSource
      driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
      serverTimezone: UTC

这里配置了mysql和sql server。然后建立连接数据源的配置文件。

mysql
@Configuration
@MapperScan(basePackages = {"com.mdoss.materialsale.service.mapper.**", "com.mdoss.logcenter.**"}, sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MybatisDbMbossConfig {
    @Primary//主数据源
    @Bean(name = "masterDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.mboss")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "masterSqlSessionFactory")//会话工厂
    public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
        return factoryBean.getObject();
    }

    @Primary
    @Bean(name = "masterTransactionManager")//数据库事务
    public DataSourceTransactionManager transactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "masterSqlSessionTemplate")//会话模板
    @Primary
    public SqlSessionTemplate testSqlSessionTemplate(
            @Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}
sql server
@Configuration
@MapperScan(basePackages = "com.mdoss.materialsale.service.mapper.**", sqlSessionFactoryRef = "mdk3SqlSessionFactory")
public class MybatisDbMdk3Config {

    @Bean(name = "mdk3DataSource")
    @ConfigurationProperties(prefix = "spring.datasource.mdk3")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "mdk3SqlSessionFactory")//会话工厂
    public SqlSessionFactory sqlSessionFactory(@Qualifier("mdk3DataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.mdoss.materialsale.model.entity.**");
        factoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:k3Mapper/*.xml"));
        return factoryBean.getObject();
    }

    //@Qualifier("xxx")的含义是告诉他使用哪个DataSource
    @Bean(name = "mdk3TransactionManager")//事务
    public DataSourceTransactionManager transactionManager(@Qualifier("mdk3DataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "mdk3SqlSessionTemplate") //会话模板
    public SqlSessionTemplate testSqlSessionTemplate(
            @Qualifier("mdk3SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

公司使用的是mybatis,所以还需要创建对应的Mapper文件。
在这里插入图片描述
对应实体
在这里插入图片描述
在使用时,注意对应路径不要写错就完活了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值