spring 4.0.6 + mybatis 3.2.5 + mybatis-spring 1.2.3 构造多个数据源的配置
java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料
保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。
一套数据库访问的配置主要由以下部分构成
1.1 dataSource
1bean 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
1<bean id="tysSqlSessionFactory" class="org.<a href="http://www.cfei.net/archives/tag/mybatis" title="浏览关于“mybatis”的文章" target="_blank" class="tag_link">mybatis</a>.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
1<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中,请使用如下的方法进行处理
1<value>classpath*:com/*/mapping/**/*.xml</value>
2: 在配置MapperScannerConfigurer时sqlSessionFactoryBeanName的配置
按照一般的规则大部分人喜欢配置成
1<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
但是在高版本的spring中,sqlSessionFactory的初始化快于dataSource的生成,dataSources的生成依赖于读取配置文件,等操作,所以导致sqlSessionFactory的初始化失败,而使用
1<property name="sqlSessionFactoryBeanName" value="tysSqlSessionFactory" />
即可避免该问题。
因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。
后续会有更多的精彩的内容分享给大家。