springboot + mybais構成し、複数のデータソース(サブ実装しました)

まず、サブ方法:

図1は、二つのデータベースのapplication.propertiesに配置されました:

#druid接続プール
#dataSoureOne(ここでは私のローカル・データ・ソースがある)
spring.datasource.one.type = com.alibaba.druid.pool.DruidDataSource 
spring.datasource.one.driver - クラス -name = com.mysql.jdbc。ドライバー
spring.datasource.one.jdbc -url = JDBC:MySQLの:// localhostの:? 3306 / =真useUnicodeにテスト&characterEncoding = UTF-8&useSslオプション=偽&serverTimezone = UTC 
spring.datasource.one.username = ルート
spring.datasource.one.password = ルート
#dataSoureTwo(ここでは、当社のデータ・ソース・サーバーがある) spring.datasource.two.type
= com.alibaba.druid.pool.DruidDataSource spring.datasource.two.driver - クラス -name =com.mysql.jdbc.Driver spring.datasource.two.jdbc -url = JDBCます。mysql:// xx.xxx.xx.xxx:3306/kds_master_info?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC spring.datasource。 two.username = ルート spring.datasource.two.password = KDSmaster123

図2に示すように、偶数データソース設定ファイルの確立:

以下は、データソースのパッケージのインポートjavax.activation.DataSourceを導入していることに注意してください。   

@Configuration 
//設定インタフェースクラスが正しい場所をMyBatisの @MapperScan(basePackages
= " com.example.mybatis.mapper "、sqlSessionFactoryRef = " sqlSessionFactoryOne " パブリック クラスDataSourceConfigOne { @Bean(名 = " dataSourceOne " @Primary // このデータは、データソースがデフォルトのソースで表す // オブジェクトにマップapplication.propertiesにおける設定パラメータを読み取り、プレフィックスがプレフィックスパラメータを表し (=接頭辞@ConfigurationPropertiesをspring.datasource.one 公衆データソースdataSourceOne(){ リターン DataSourceBuilder.create()ビルド(); } @Bean(名 = " sqlSessionFactoryOne " @Primary 公共 SqlSessionFactory sqlSessionFactoryOne(@Qualifier(" dataSourceOne " )データソースデータソース)は例外{スロー SqlSessionFactoryBeanビーン = 新しいSqlSessionFactoryBeanを(); bean.setDataSource(データソース)。 bean.setMapperLocations( // 设置MyBatisのXML的所在位置 新しい。PathMatchingResourcePatternResolver()getResources(" クラスパス:マッパー/ * xmlの" ));
  bean.getObject()getConfiguration()setMapUnderscoreToCamelCase(真)。。。
リターンbean.getObject(); } @Primary 公共 SqlSessionTemplate sqlsessiontemplateOne(@Qualifier(" sqlsessiontemplateOne " )SqlSessionFactoryのSessionFactory){ 戻り 新しいSqlSessionTemplate(のSessionFactory)を、 } }
@Configuration 
@MapperScan(basePackages = " com.example.mybatis.mapper2 "、sqlSessionFactoryRef = " sqlSessionFactoryTwo " パブリック クラスDataSourceConfigTwo { 
    @Bean(名 = " dataSourceTwo " // 設定パラメータを読むapplication.propertiesにマッピングされますオブジェクトは、プレフィックスがプレフィックスパラメータ表し 
    @ConfigurationProperties(接頭辞= " spring.datasource.two " パブリックデータソースdataSourceTwo(){
         戻り  DataSourceBuilder.createを()ビルド();. 
    } 

    @Beanを(名前= " sqlSessionFactoryTwo " 公衆 SqlSessionFactory sqlSessionFactoryTwo(@Qualifier(" dataSourceTwo " )データソースデータソース)は、例外{スロー
        SqlSessionFactoryBeanビーン = 新しいSqlSessionFactoryBeanを(); 
        bean.setDataSource((javax.sql.DataSourceの)データソース)。
        bean.setMapperLocations(
                // 设置MyBatisのXML的所在位置
                新しい。PathMatchingResourcePatternResolver()getResources(" クラスパス:mapper2 / * xmlの" )); 
  bean.getObject()getConfiguration()setMapUnderscoreToCamelCase(真)。。。
リターンbean.getObject(); } 公共 SqlSessionTemplate sqlsessiontemplateTwo(@Qualifier(" sqlsessiontemplateTwo " )SqlSessionFactoryのSessionFactory){ リターン 新しいSqlSessionTemplate(のSessionFactory)。 } }

注意:

1、春はメインデータソース(既定のデータソース)になる場合にせずにあなたが言うことができなかったため、プライマリは、このコメントを追加する必要があります@

2、マッパーインタフェース、およびXML形式のDAO図ディレクトリに示すように、2つの別個の層を必要とします。 

 

 

 

3、bean.setMapperLocations(新しいPathMatchingResourcePatternResolver()getResources(「XXXX」)。)。

マッパーのフォームを設定する必要がありますxmlファイルの場所、それ以外の場合はエラー:なし声明(このエラーは、XMLマッパーであってもよく、

矛盾によって引き起こされたプロジェクトへのパスの名前空間)

図4に示すように、異なるビジネスレイヤに応じて異なるサービス層注入DAOで:

 

 

 

 

 

 5.私はハンプマッピングは失敗で下線が引かれ、これはあるべき、プロジェクトおよびアクセスインターフェイスのみを見るために半分の時間を見つけるために、文句を言うでしょう開始し始めました

そして.. sqlSessionFactoryOne sqlSessionFactoryTwo bean.getObject()getConfiguration()setMapUnderscoreToCamelCase(真)内部の行を追加。 

その後、訪問し続けることができ、およびエラーはJDBC接続の取得に失敗しました。ネストされた例外はcom.mysql.jdbc.exceptions.jdbc4です。

CommunicationsException:通信リンク障害。

その後、お問い合わせは、それは、変更上記のデータベース接続URL&useSslオプション=真&useSslオプション=偽であることを

 

最後のテストは、2つのユーザ情報データベーステーブルとユーザーデータが表示されます。

ユーザー情報:

 

 

ユーザー:

 

 

 

最後に、ミスが単一のデータソース構成で、私のspringbootは2.xので、ここで追加し、追加するのを忘れています

URLデータベース接続がある場合は、spring.datasource.url = xxxは、これは問題ありませんが、複数のデータソースを構成するとき

spring.datasource.one.url和spring.datasource.two.url会报错jdbcUrlとはdriverClassNameで必要とされます。

spring.datasource.one.urlのspring.datasource.two.urlとspring.datasource.one.jdbc-URLへのURL、

これは、JDBC-URLが変更することができるURLです。

おすすめ

転載: www.cnblogs.com/red-star/p/12529100.html