Spring MVC+MyBatisでの複数データベース利用設定

PayPayキャンペーンあっという間の100億円還元だったなぁ・・・。
20%キャッシュバックにとびつく日本人。
まんまとみんな個人情報せっせと提供しちゃいましたねw

さて、
Spring MVC + MyBatisの環境で
1プロジェクトで複数データベースの接続を使い分けたい場合の設定です。

Spring MVCの設定ファイル(多くの場合、application-context.xml)に
以下のように設定する。

...
    <!-- 2つ目の接続設定 -->
    <bean id="dataSourceSub"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"    value="${jdbc.sub.driverClassName}" />
        <property name="url"                value="${jdbc.sub.url}" />
        <property name="username"            value="${jdbc.sub.username}" />
        <property name="password"            value="${jdbc.sub.password}" />
    </bean>
    <bean id="sqlSessionFactorySub" name="sqlSessionFactorySub" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource"            ref="dataSourceSub" />
         ...
    </bean>
    <bean id="sqlSessionSub" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactorySub" />
    </bean>
    <bean id="transactionManagerSub" name="transactionManagerSub" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSourceSub" />
    </bean>
    <mybatis:scan base-package="jp.co.sei.is.iottech.testdata.dao" factory-ref="sqlSessionFactorySub"/>
...

ポイントは最後のmybatis:scanタグで設定しているfactory-ref属性。

ここではjp.co.sei.is.iottech.testdata.daoパッケージ配置するMapperについては
2つ目の接続設定を使うように指定している。
1つ目の接続設定は同ファイルに別beanで作成してください。
また1つ目の接続と2つ目の接続はMapperのパッケージは分けてくださいな。

この件、日本語での記事があんまり無かったみたいなのでこの記事が誰かのお役に立てれば幸い。

ではでは、ペイペイ!

カテゴリー: Java

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です