首页 > 编程语言 > 详细

SpringBoot配置多数据源

时间:2021-08-15 11:38:05      阅读:15      评论:0      收藏:0      [点我收藏+]

SpringBoot配置多数据源

配置文件信息中配置两个数据源,分别用masterdb和devdb标记

spring:
  datasource:
    masterdb:
      username: username
      password: 123456
      jdbc-url: jdbc:mysql://localhost:3306/dbA?useUnicode=true&characterEncoding=utf-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=UTC
      driver-class-name: com.mysql.cj.jdbc.Driver
    devdb:
      username: username
      password: 123456
      jdbc-url: jdbc:mysql://localhost:3306/dbB?useUnicode=true&characterEncoding=utf-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=UTC
      driver-class-name: com.mysql.cj.jdbc.Driver

数据源的config类

@Configuration
@MapperScan(basePackages = "com.xzh.quartz.masterMaper", sqlSessionTemplateRef = "MasterSqlSessionTemplate")
public class DBMasterConfig {

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

    @Bean(name = "MasterSqlSessionFactory")
    @Primary
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("MasterDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/*.xml"));
        return bean.getObject();
    }

    @Bean(name = "MasterTransactionManager")
    @Primary
    public DataSourceTransactionManager testTransactionManager(@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);
    }
}
@Configuration
@MapperScan(basePackages = "com.xzh.quartz.slaverMapper", sqlSessionTemplateRef = "SalverSqlSessionTemplate")
public class DBSlaverConfig {

    @Bean(name = "SalverDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.devdb")
    public DataSource testDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "SalverSqlSessionFactory")
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("SalverDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/*.xml"));
        return bean.getObject();
    }

    @Bean(name = "SalverTransactionManager")
    public DataSourceTransactionManager testTransactionManager(@Qualifier("SalverDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "SalverSqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("SalverSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

Mapper.java文件放进对应的包路径内,缺保能被@MapperScan注解扫描到

测试类

@SpringBootTest
public class DataSourceTest {

    @Autowired
    StudentMapper studentMapper;
    @Autowired
    TeacherMapper teacherMapper;
    @Autowired
    MovieMapper movieMapper;
    @Test
    public void test(){
        List list = studentMapper.queryAll();
        System.out.println(list);
        List<Map> movieList = movieMapper.queryAll();
        System.out.println(movieList);
    }
}

SpringBoot配置多数据源

原文:https://www.cnblogs.com/xzh-hash/p/15142394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!