まず、サブ方法:
図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つのユーザ情報データベーステーブルとユーザーデータが表示されます。
ユーザー情報:
ユーザー: