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&lt;bean id=&quot;tysSqlSessionFactory&quot; class=&quot;org.<a href="http://www.cfei.net/archives/tag/mybatis" title="浏览关于“mybatis”的文章" target="_blank" class="tag_link">mybatis</a>.spring.SqlSessionFactoryBean&quot;&gt;
        &lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot;/&gt;
        &lt;property name=&quot;mapperLocations&quot;&gt;
            &lt;array&gt;
                &lt;value&gt;classpath:mapping/*Mapper.xml&lt;/value&gt;
                &lt;value&gt;classpath*:com/*/mapping/**/*.xml&lt;/value&gt;
            &lt;/array&gt;
        &lt;/property&gt;
    &lt;/bean&gt;

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" />

即可避免该问题。

高版本spring多数据源配置mybatis

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。