mybatis-spring多数据源配置

mybatis-spring多数据源配置

1.注意事项:在MapperScannerConfigurer里配置的时候,每个数据源的mapper接口应放到不同的包中,下面的例子中用粗体标明,另外,对于mybatis-config.xml配置文件,如果每个数据源配置不同,也最好有多个
2.mapper.xml配置文件可以放到一个目录里,但是为了区分,最好也分开放
3.配置的例子
  <bean id="parentDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <!--maxActive: 最大连接数量-->
        <property name="maxActive" value="150"/>
        <!--minIdle: 最小空闲连接-->
        <property name="minIdle" value="5"/>
        <!--maxIdle: 最大空闲连接-->
        <property name="maxIdle" value="20"/>
        <!--initialSize: 初始化连接-->
        <property name="initialSize" value="30"/>
        <!-- 连接被泄露时是否打印 -->
        <property name="logAbandoned" value="true"/>
        <!--removeAbandoned: 是否自动回收超时连接-->
        <property name="removeAbandoned" value="true"/>
        <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
        <property name="removeAbandonedTimeout" value="10"/>
        <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->
        <property name="maxWait" value="1000"/>
        <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->
        <property name="timeBetweenEvictionRunsMillis" value="10000"/>
        <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->
        <property name="numTestsPerEvictionRun" value="10"/>
        <!-- 1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->
        <property name="minEvictableIdleTimeMillis" value="10000"/>
        <property name="validationQuery" value="SELECT 1"/>
    </bean>
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- ========================= DBCP数据源 ========================== -->
    <bean id="dataSource" parent="parentDataSource">
        <property name="url" value="${mysql.jdbc.url}"/>
        <property name="username" value="${mysql.jdbc.username}"/>
        <property name="password" value="${mysql.jdbc.password}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath*:mybatis/mappers/*.xml"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
    </bean>
    <!-- 自动Dao装配 -->
    <bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.qunar.fuwu.ticket.config.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>
 
    <context:component-scan base-package="com.qunar.fuwu.ticket.config.dao"/>
    <!-- 另一个数据源-->
    <bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource_1"/>
    </bean>
    <bean id="dataSource_1" parent="parentDataSource">
        <property name="url" value="${mysql.jdbc.datasource1.url}"/>
        <property name="username" value="${mysql.jdbc.datasource1.username}"/>
        <property name="password" value="${mysql.jdbc.datasource1.password}"/>
    </bean>
    <bean id="sqlSessionFactory_1" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource_1"/>
        <property name="mapperLocations" value="classpath*:mybatis/mappers/*.xml"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
    </bean>
    <bean name="mapperScannerConfigurer_1"
          class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.qunar.fuwu.ticket.config.dao2" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_1" />
     </bean>
</beans>
posted @ 2014-12-02 11:01  我爱马培培  阅读(446)  评论(0编辑  收藏  举报