Spring多数据源配置和使用
1、配置信息
<!--==============================bpt_mobdb数据库配置============================-->
<bean id="bpt_mobdb" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="${database.bpt.url}">
</property>
<property name="username" value="${database.bpt.username}"></property>
<property name="password" value="${database.bpt.password}"></property>
<property name="maxIdle" value="${maxIdle}"/>
<property name="minIdle" value="${minIdle}"/>
<property name="maxActive" value="${maxActive}"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
<property name="maxWait" value="${maxWait}"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
</bean>
<bean id="bptSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="bpt_mobdb"/>
<property name="configLocation" value="classpath:com/qingqing/bpt/META-INF/mybatis/mybatis-config.xml"/>
</bean>
<!-- 事务配置 -->
<bean id="dataTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="bpt_mobdb"/>
<!-- 事务别称 使用时 @Transactional("bpt_mobdb") 不同数据源需要配不同的事务 -->
<qualifier value="bpt_mobdb"/>
</bean>
<tx:annotation-driven transaction-manager="dataTransactionManager"/>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="bptSqlSessionFactory"/>
<!-- 每个数据源对应的mapper,再该mapper下可以直接操作该数据源 -->
<property name="basePackage" value="com.qingqing.bpt.mapper"/>
</bean>
<!--==============================dim_mobdb数据库配置============================-->
<bean id="dim_mobdb" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="${database.dim.url}"></property>
<property name="username" value="${database.dim.username}"></property>
<property name="password" value="${database.dim.password}"></property>
<property name="maxIdle" value="${maxIdle}"/>
<property name="minIdle" value="${minIdle}"/>
<property name="maxActive" value="${maxActive}"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
<property name="maxWait" value="${maxWait}"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
</bean>
<bean id="dimSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dim_mobdb"/>
<property name="configLocation" value="classpath:com/qingqing/bpt/META-INF/mybatis/mybatis-config.xml"/>
</bean>
<tx:annotation-driven transaction-manager="dim_dataTransactionManager"/>
<bean id="dim_dataTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dim_mobdb"/>
<qualifier value="dim_mobdb"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="dimSqlSessionFactory"/>
<property name="basePackage" value="com.qingqing.dim.mapper"/>
</bean>
<!--==============================conf_mobdb数据库配置============================-->
<bean id="conf_mobdb" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="${database.conf.url}"></property>
<property name="username" value="${database.conf.username}"></property>
<property name="password" value="${database.conf.password}"></property>
<property name="maxIdle" value="${maxIdle}"/>
<property name="minIdle" value="${minIdle}"/>
<property name="maxActive" value="${maxActive}"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
<property name="maxWait" value="${maxWait}"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
</bean>
<bean id="confSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="conf_mobdb"/>
<property name="configLocation" value="classpath:com/qingqing/bpt/META-INF/mybatis/mybatis-config.xml"/>
</bean>
<tx:annotation-driven transaction-manager="conf_dataTransactionManager"/>
<bean id="conf_dataTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="conf_mobdb"/>
<qualifier value="conf_mobdb"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="confSqlSessionFactory"/>
<property name="basePackage" value="com.qingqing.conf.mapper"/>
</bean>
2、使用
不同数据源关联操作: 库名.表名
select a.*,b.* bpt_mobdb.tableA a left join dim_mobdb.tableB b on a.id = b.user_id