您的位置:首页 > 编程语言 > Java开发

spring 4.0.6 + mybatis 3.2.5 + mybatis-spring 1.2.3 构造多个数据源的配置

2016-02-16 15:44 405 查看
一套数据库访问的配置主要由以下部分构成

1.1 dataSource

bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${jdbc.driver}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
……


1.2 SqlSessionFactory

<bean id="tysSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations">
<array>
<value>classpath:mapping/*Mapper.xml</value>
<value>classpath*:com/*/mapping/**/*.xml</value>
</array>
</property>
</bean>


1.3 MapperScannerConfigurer

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xx.xx.dao"/>
<property name="sqlSessionFactoryBeanName" value="tysSqlSessionFactory" />
</bean>


以上为每个spring + myibatis构建的工程的必备配置。如果存在多个数据源,不加以区分SqlSessionFactory,会引起访问数据库的异常,应为系统不会自动的区分当前的数据源指的是哪一个数据库。

所以如果存在多个数据源需要俩套配置。配置是请注意一下位置

1: SqlSessionFactory中的mapperLocations配置,如果存在多个,且某个存在于jar中,请使用如下的方法进行处理

<value>classpath*:com/*/mapping/**/*.xml</value>


2: 在配置MapperScannerConfigurer时sqlSessionFactoryBeanName的配置

按照一般的规则大部分人喜欢配置成

<property name="sqlSessionFactory" ref="sqlSessionFactory"/>


但是在高版本的spring中,sqlSessionFactory的初始化快于dataSource的生成,dataSources的生成依赖于读取配置文件,等操作,所以导致sqlSessionFactory的初始化失败,而使用

<property name="sqlSessionFactoryBeanName" value="tysSqlSessionFactory" />


即可避免该问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: