• springboot-mybatis配置多数据源


    1.在springboot配置文件中配置多个(2个为例)数据源

    # 案件分析业务database   ##注意springboot2.0以后要使用jdbc-url,使用url会报错
    spring.datasource.primary.jdbc-url=jdbc:postgresql://**.**.***.36:5432/inarc-case-analysis
    spring.datasource.primary.username=postgres
    spring.datasource.primary.password=12345+
    spring.datasource.primary.driver-class-name=org.postgresql.Driver
    # 上传数据所在database
    spring.datasource.secondary.jdbc-url=jdbc:postgresql://**.**.***.50:5432/inarc-pocket-data
    spring.datasource.secondary.username=postgres
    spring.datasource.secondary.password=987654
    spring.datasource.secondary.driver-class-name=org.postgresql.Driver

    2.数据源配置类

    @Configuration
    //此数据源指定的mybatis接口所在包
    @MapperScan(basePackages = {"com.hikvision.idatafusion.**.dao.**"}, sqlSessionFactoryRef = "primarySqlSessionFactory")
    public class PrimaryDatasourceConfig {
    
        @Primary  //标识其为默认数据源
        @Bean(name = "primaryDataSource")
        @ConfigurationProperties(prefix = "spring.datasource.primary")
        public DataSource getDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Primary
        @Bean(name = "primarySqlSessionFactory")
        public SqlSessionFactory getSqlSessionFactory(@Qualifier("primaryDataSource") DataSource datasource) throws Exception {
            SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
            sqlSessionFactoryBean.setDataSource(datasource);
            sqlSessionFactoryBean.setMapperLocations(
                    //设置mybatis的xml所在位置
                    new PathMatchingResourcePatternResolver().getResources("classpath*:com.hikvision.idatafusion.jd.mapper/*.xml")
            );
        //开启驼峰  注意:配置多数据源情况 配置文件中的mybatis相关配置都失效,因此需要在配置类中配置,  如下为驼峰配置
        sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
        return sqlSessionFactoryBean.getObject();
      }

      @
    Primary
      @Bean(name
    = "primarySqlSessionTemplate")
      public SqlSessionTemplate getSqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
      }

    }
     1 @Configuration
     2 //此数据源指定的mybatis接口所在包
     3 @MapperScan(basePackages = {"com.hikvision.idatafusion.**.dao2.**"}, sqlSessionFactoryRef = "secondarySqlSessionFactory")
     4 public class SecondaryDatasourceConfig {
     5 
     6     @Bean(name = "secondaryDataSource")
     7     @ConfigurationProperties(prefix = "spring.datasource.secondary")
     8     public DataSource getDataSource() {
     9         return DataSourceBuilder.create().build();
    10     }
    11 
    12     @Bean(name = "secondarySqlSessionFactory")
    13     public SqlSessionFactory getSqlSessionFactory(@Qualifier("secondaryDataSource") DataSource datasource) throws Exception {
    14         SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
    15         sqlSessionFactoryBean.setDataSource(datasource);
    16         sqlSessionFactoryBean.setMapperLocations(
    17                 //设置mybatis的xml所在位置
    18                 new PathMatchingResourcePatternResolver().getResources("classpath*:com.hikvision.idatafusion.jd.mapper2/*.xml")
    19         );
    20         return sqlSessionFactoryBean.getObject();
    21     }
    22 
    23     @Bean(name = "secondarySqlSessionTemplate")
    24     public SqlSessionTemplate getSqlSessionTemplate(@Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
    25         return new SqlSessionTemplate(sqlSessionFactory);
    26     }
    27 }
    第二个数据源配置类

    3.注意:

    1.每个数据源配置类都指定了扫描mapper接口所在的包,所以启动类的@MapperScan需要注释。

    2.每个数据源配置类都指定了mapperLocations,所以需要在启动类中注释掉mybatis.mapper-locations的配置。

    3.按照上述配置类分别建立对应的mapper接口包  和  mapperLocations包放置xml文件。即可操作对应的数据库。

  • 相关阅读:
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 · Ink
    dotnet Framework 源代码 · Ink
    dotnet core 用值初始化整个数组
    dotnet core 用值初始化整个数组
    dotnet core 隐藏控制台
    dotnet core 隐藏控制台
    PHP mt_rand() 函数
    PHP mt_getrandmax() 函数
  • 原文地址:https://www.cnblogs.com/fangyan1994/p/13955058.html
Copyright © 2020-2023  润新知