037 [スイッチ]は複数のデータソースをspringboot

 

 

構成ファイルapplication.properties 1、2つのデータソース

#默认使用のtomcat-JDBC 
spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource 

spring.datasource.data1.url = JDBCます。mysql://127.0.0.1:3306 / mysqlのブート
spring.datasource。 data1.username =ルート
spring.datasource.data1.password = 123123 
spring.datasource.data1.driverクラス名=はcom.mysql.jdbc.Driver 

spring.datasource.data2.url = JDBCます。mysql://127.0.0.1 :3306 / mysqlの-confswh 
spring.datasource.data2.username =ルート
spring.datasource.data2.password = 123123 
spring.datasource.data2.driver-クラス名=はcom.mysql.jdbc.Driver

 

 設定するには、パッケージのデータソース、新しいDataSource1、DataSource2二つのファイル、注釈データソースを作成するには2、

 DataSource1

パッケージcom.springboot.datasource。

輸入org.apache.ibatis.session.SqlSessionFactory;
輸入org.mybatis.spring.SqlSessionFactoryBean。
輸入org.mybatis.spring.SqlSessionTemplate。
輸入org.mybatis.spring.annotation.MapperScan;
輸入org.springframework.beans.factory.annotation.Qualifier;
輸入org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder。
輸入org.springframework.boot.context.properties.ConfigurationProperties。
輸入org.springframework.context.annotation.Bean。
輸入org.springframework.context.annotation.Configuration。
インポートorg.springframework.context.annotation.Primary;
 インポートorg.springframework.jdbc.datasource.DataSourceTransactionManager; 

インポートするjavax.sql.DataSource; 

@Configuration // ばね容器に注釈 
@MapperScan(basePackages =「com.springboot.data1.mapper "sqlSessionFactoryRef =" data1SqlSessionFactory " パブリック クラスDataSource1 {に

    / ** 
     *返さデータベースのデータソースDATA1は
     * @return 
     * / 
    @Bean(名 =" data1Source " 
    @Primary // プライマリデータソース 
    @ConfigurationProperties(接頭辞="スプリング.datasource.data1 " 公衆データソースのデータソース(){
         戻ります)(DataSourceBuilder.createを構築します()。
    } 

    / ** 
     *返回DATA1数据库的会话工厂
     * @param DS 
     * @return 
     * @throws 例外
      * / 
    @Bean(名前は = "data1SqlSessionFactory" 
    @Primary 
    公共 SqlSessionFactory sqlSessionFactory(@Qualifier( "data1Source")のDataSource dsは)スロー例外{ 
        SqlSessionFactoryBeanビーン = 新しいSqlSessionFactoryBean()。
        bean.setDataSource(DS)。
        返す bean.getObjectを();
    } 

    / **
     * DATA1テンプレートデータベースのセッションを返します
     * @param のSessionFactory 
     * @return 
     * @throws 例外
      * / 
    @Bean(名前 = "data1SqlSessionTemplate" 
    @Primary 
    公共 SqlSessionTemplate SqlSessionTemplate(@Qualifier( "data1SqlSessionFactory")SqlSessionFactoryのSessionFactory)スロー  例外を{
         返す  新しい新SqlSessionTemplate(のSessionFactory); 
    } 

    / ** 
     *トランザクションデータベースのデータ1を返す
     * @paramのDS 
     * @return 
     * /
    @Bean(名前= "data1TransactionManager" 
    @Primary 
    公共 DataSourceTransactionManagerのTransactionManager(@Qualifier( "data1Source" データソースDS){
         戻り 新しい)DataSourceTransactionManager(DSと、
    } 
}

 

DataSource2:

package com.springboot.datasource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration//注解到spring容器中
@MapperScan(basePackages = "com.springboot.data2.mapper",sqlSessionFactoryRef = "data2SqlSessionFactory")
public class DataSource2 {

    /**
     * 返回data2数据库的数据源
     * @return
     */
    @Bean(name="data2Source")
    @ConfigurationProperties(prefix = "spring.datasource.data2")
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }

    /**
     * 返回data2数据库的会话工厂
     * @param ds
     * @return
     * @throws Exception
     */
    @Bean(name = "data2SqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("data2Source") DataSource ds) throws Exception{
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(ds);
        return bean.getObject();
    }

    /**
     * 返回data2数据库的会话模板
     * @param sessionFactory
     * @return
     * @throws Exception
     */
    @Bean(name = "data2SqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data2SqlSessionFactory") SqlSessionFactory sessionFactory) throws  Exception{
        return  new SqlSessionTemplate(sessionFactory);
    }

    /**
     * 返回data2数据库的事务
     * @param ds
     * @return
     */
    @Bean(name = "data2TransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier("data2Source") DataSource ds){
        return new DataSourceTransactionManager(ds);
    }
}

 

3、测试 Service&Mapper

    @RequestMapping("getTopicList")
    public List<Map<String,Object>> getTopicList(){
        List<Map<String,Object>> list1 = userServiceData1.getTopicListData1();
        List<Map<String,Object>> list2 = userServiceData2.getTopicListData2();
        return list1;
    }

 

 

https://www.cnblogs.com/lijianda/p/11022892.html

 

附:

http://www.demodashi.com/demo/14622.html

おすすめ

転載: www.cnblogs.com/badboyh2o/p/11258402.html