• SpringBoot中基于Mybatis多数据源操作


    在SpringBoot中,基于Mybatis多数据源操作,需要以下配置:

    1、在项目的pom.xml 文件中配置多个数据库的连接配置信息

    2、根据数据源的数量编写多个数据库的配置文件xxxxConfig

    导入的包

    import com.alibaba.druid.pool.DruidDataSource;
    import javax.sql.DataSource;
    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.jdbc.datasource.DataSourceTransactionManager;
    

      

    @Configuration
    // 扫描 Mapper 接口并容器管理
    @MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
    public class MasterDataSourceConfig {
      //精确到 master 目录,以便跟其他数据源隔离
      static final String PACKAGE = "com.xxx.xxx.xxx.dao.master";
      static final String MAPPER_LOCATION = "classpath:mapper/master/*.xml";
    
      @Value("${spring.datasource.master.url}")
      private String url;
    
      @Value("${spring.datasource.master.username}")
      private String user;
    
      @Value("${spring.datasource.master.password}")
      private String password;
    
      @Value("${spring.datasource.master.driver-class-name}")
      private String driverClassName;
    
      @Bean(name = "masterDataSource")
      @Primary
      public DataSource masterDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
      }
    
      @Bean(name = "masterTransactionManager")
      @Primary
      public DataSourceTransactionManager masterTransactionManager() {
        return new DataSourceTransactionManager(masterDataSource());
      }
    
      @Bean(name = "masterSqlSessionFactory")
      @Primary
      public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource)
          throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(masterDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
            .getResources(MasterDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
      }
    }
    

      

    @Configuration
    // 扫描 Mapper 接口并容器管理
    @MapperScan(basePackages = SecondDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "secondSqlSessionFactory")
    public class SecondDataSourceConfig {
      // 精确到 cluster 目录,以便跟其他数据源隔离
      static final String PACKAGE = "com.xxx.xxx.xxx.dao.second";
      static final String MAPPER_LOCATION = "classpath:mapper/second/*.xml";
    
      @Value("${spring.datasource.second.url}")
      private String url;
    
      @Value("${spring.datasource.second.username}")
      private String user;
    
      @Value("${spring.datasource.second.password}")
      private String password;
    
      @Value("${spring.datasource.second.driver-class-name}")
      private String driverClass;
    
      @Bean(name = "secondDataSource")
      public DataSource clusterDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
      }
    
      @Bean(name = "secondTransactionManager")
      public DataSourceTransactionManager clusterTransactionManager() {
        return new DataSourceTransactionManager(clusterDataSource());
      }
    
      @Bean(name = "secondSqlSessionFactory")
      public SqlSessionFactory clusterSqlSessionFactory(@Qualifier("secondDataSource") DataSource clusterDataSource)
          throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(clusterDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
            .getResources(SecondDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
      }
    }
    

      

  • 相关阅读:
    Qt中的角度转弧度
    Qt5鼠标事件及实例
    POJ 2239 Selecting Courses【最大匹配】
    POJ 1325 Machine Schedule【最小点覆盖】
    POJ 1469 COURSES【二分图最大匹配】
    POJ 1274 The Perfect Stall【二分图最大匹配】
    poj2226Muddy Fields【最小点覆盖(建图的思路比较好)】
    hdu4160Dolls【最小路径覆盖】
    hdu2444The Accomodation of Students【判断二分图+最大匹配】
    HLG1407Leyni的游戏【最小点权覆盖集】
  • 原文地址:https://www.cnblogs.com/MoreThinking/p/13652074.html
Copyright © 2020-2023  润新知