春ブーツは、複数のデータソースを統合MyBatisの

春ブーツは、複数のデータソースを統合MyBatisの

複雑なアプリケーションの開発において、アプリケーションは、いわゆるマルチソース・データは、データベースの接続は、少なくとも二つ以上として定義されるに接続された複数のデータソースを含むことができます。

まず、春ブーツプロジェクトを作成します

MyBatisの追加、依存ドルイド(ドルイドここで、あなたは伝統的なドルイドを使用することはできませんドルイドを構築春ブーツのために設計されなければならない)、MySQLとウェブ依存、完全な依存性は次のように:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <!--注意配置版本号-->
            <version>5.1.28</version>
     https://i.cnblogs.com/EditCategories.aspx?catid=1       <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
    </dependencies>

複数のデータソース構成

次に、2つのデータソース、構成を以下簡単application.propertiesに設けられた構成データベースapplication.propertiesにおける基本的な情報を複数のデータソースを設定します。

spring.datasource.one.url=jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf-8
spring.datasource.one.username=root
spring.datasource.one.password=123456
spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.two.url=jdbc:mysql://localhost:3306/test02?useUnicode=true&characterEncoding=utf-8
spring.datasource.two.username=root
spring.datasource.two.password=123456
spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource

次いでDataSourceConfig構成クラスを作成し、対応する2つのデータソース内の構成:

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.one")
    DruidDataSource dsOne() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.two")
    DruidDataSource dsTwo() {
        return DruidDataSourceBuilder.create().build();
    }
}

MyBatisの設定

ここでは、2つのカテゴリに配置された2つの豆ので、2つのデータソースを設定する必要があります。

@Configuration//声明该类是一个配置类
@MapperScan(basePackages = "com.lwh.mybatistest.mapper", sqlSessionFactoryRef = "sqlSessionFactory1", sqlSessionTemplateRef = "sqlSessionTemplate1")
//扫描的包是com.lwh.mybatistest.mapper
//SqlSessionFactory根据dsOne创建,然后再根据创建好的SqlSessionFactory创建一个SqlSessionTemplate。
public class MyBatisConfigOne {
    @Resource(name = "dsOne")
    DataSource dsOne;

    @Bean
    SqlSessionFactory sqlSessionFactory1() {
        SqlSessionFactory sessionFactory = null;
        try {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dsOne);
            sessionFactory = bean.getObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sessionFactory;
    }

    @Bean
    SqlSessionTemplate sqlSessionTemplate1() {
        return new SqlSessionTemplate(sqlSessionFactory1());
    }
}

動作が異なるデータ・ソースであるため、ここで注意すべき第一の構成、第二の構成データ・ソースによれば、パッケージの走査は、同じ、異なる動作マッパー異なるデータソースではありません。次のように:

@Configuration//声明该类是一个配置类
@MapperScan(basePackages = "com.lwh.mybatistest.mapper2", sqlSessionFactoryRef = "sqlSessionFactory2", sqlSessionTemplateRef = "sqlSessionTemplate2")
public class MyBatisConfigTwo {
    @Resource(name = "dsTwo")
    DataSource dsTwo;

    @Bean
    SqlSessionFactory sqlSessionFactory2() {
        SqlSessionFactory sessionFactory = null;
        try {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dsTwo);
            sessionFactory = bean.getObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sessionFactory;
    }

    @Bean
    SqlSessionTemplate sqlSessionTemplate2() {
        return new SqlSessionTemplate(sqlSessionFactory2());
    }
}

次のようにプロジェクトが構成されています。

上記mapper.xmlファイルには、ここではそれらを繰り返さない、MyBatisのリバースエンジニアリングを使用して生成されます。
Mavenプロジェクトでは、公式には、パッケージのアイテムが自動的に除外されるJavaの下に置かれた場合、我々は、リソースファイル内のXMLファイルを置くことを示唆し、そのプロジェクトは、当社のXMLファイルをフィルタリングしないように、我々は、設定ファイルをMavenの私たちは次のように、設定情報を追加したのpom.xml設定ファイルbulidノードが必要になります。

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
</build>

パッケージ化され、リリースされたときに、このようなプロジェクトは、それが私たちのmapper.xmlファイルをフィルタリングしません

データの一つのデータベース:

二つのデータベースのデータ:

今私達の設定をテストするためのテストの種類は成功しました:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatistestApplicationTests {

    @Autowired
    BookMapper bookMapper;
    @Autowired
    BookMapper2 bookMapper2;
    @Test
    public void contextLoads() {
        List<Book> list = bookMapper.getAllBook();
        System.out.println("第一个:" + list);
        System.out.println("第二个:" + bookMapper2.getAllBook());

    }

}

出力は次のようになります。

第一:[予約{ID = 1、 bookname = ' 三国志'、著者= '羅貫中'}]
第二:[予約{ID = 2、 bookname = ' ドリームレッド'、著者= '曹雪芹'}]

そのため、複数のデータソースの操作は、私たちのプロジェクトの成功を設定するには!

要約:

導入春ブートプロジェクト関連の依存関係への最初の1、。
2、複数のデータベースのapplication.propertiesの構成情報、データソースの設定クラスを作成します。
図3に示すように、コンフィギュレーション・クラスに対応して配置されているマッパーの操作に対応する異なるデータベースとは異なるデータベースをMyBatisの。

上記構成のチュートリアルを参照南少しの雨のブログ。

おすすめ

転載: www.cnblogs.com/lwhsummer/p/11223617.html