美文网首页JAVA学习资源
mybatis 多数据源配置

mybatis 多数据源配置

作者: tenlee | 来源:发表于2017-08-04 18:38 被阅读181次

    mybatis官方文档

    MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者共享相同 Schema 的多个生产数据库, 想使用相同的 SQL 映射。许多类似的用例。
    不过要记住:尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一。
    所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单:
    每个数据库对应一个 SqlSessionFactory 实例

    所以在使用mybatis + spring时,应配置两个数据源(datasource),每个数据源对应一个SqlSessionFactory,然后为不同的SqlSessionFactory配置不同的
    <mybatis:scan base-package ../>即可,要注意的的是,base-package范围小的需要放在配置文件前面
    例子:

    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
    
        <!-- 配置数据源 -->
        <bean id="dataSourceChain" class="com.mchange.v2.c3p0.ComboPooledDataSource"
              destroy-method="close">
            <property name="driverClass" value="${ac.jdbc.driverClassName}"/>
            <property name="jdbcUrl" value="${ac.chain.jdbc.url}"/>
            <property name="user" value="${ac.chain.jdbc.username}"/>
            <property name="password" value="${ac.chain.jdbc.password}"/>
            <property name="minPoolSize" value="${ac.jdbc.miniPoolSize}"/>
            <property name="maxPoolSize" value="${ac.jdbc.maxPoolSize}"/>
            <property name="initialPoolSize" value="${ac.jdbc.initialPoolSize}"/>
            <property name="maxIdleTime" value="${ac.jdbc.maxIdleTime}"/>
            <property name="acquireIncrement" value="${ac.jdbc.acquireIncrement}"/>
    
            <property name="acquireRetryAttempts" value="${ac.jdbc.acquireRetryAttempts}"/>
            <property name="acquireRetryDelay" value="${ac.jdbc.acquireRetryDelay}"/>
            <property name="testConnectionOnCheckin" value="${ac.jdbc.testConnectionOnCheckin}"/>
            <property name="automaticTestTable" value="${ac.jdbc.automaticTestTable}"/>
            <property name="idleConnectionTestPeriod" value="${ac.jdbc.idleConnectionTestPeriod}"/>
            <property name="checkoutTimeout" value="${ac.jdbc.checkoutTimeout}"/>
        </bean>
    
        <!--- 第二个数据源 -->
    
        <bean id="dataSourceApp" class="com.mchange.v2.c3p0.ComboPooledDataSource"
              destroy-method="close">
            <property name="driverClass" value="${ac.jdbc.driverClassName}"/>
            <property name="jdbcUrl" value="${ac.app.jdbc.url}"/>
            <property name="user" value="${ac.app.jdbc.username}"/>
            <property name="password" value="${ac.app.jdbc.password}"/>
            <property name="minPoolSize" value="${ac.jdbc.miniPoolSize}"/>
            <property name="maxPoolSize" value="${ac.jdbc.slave.maxPoolSize}"/>
            <property name="initialPoolSize" value="${ac.jdbc.initialPoolSize}"/>
            <property name="maxIdleTime" value="${ac.jdbc.maxIdleTime}"/>
            <property name="acquireIncrement" value="${ac.jdbc.acquireIncrement}"/>
    
            <property name="acquireRetryAttempts" value="${ac.jdbc.acquireRetryAttempts}"/>
            <property name="acquireRetryDelay" value="${ac.jdbc.acquireRetryDelay}"/>
            <property name="testConnectionOnCheckin" value="${ac.jdbc.testConnectionOnCheckin}"/>
            <property name="automaticTestTable" value="${ac.jdbc.automaticTestTable}"/>
            <property name="idleConnectionTestPeriod" value="${ac.jdbc.idleConnectionTestPeriod}"/>
            <property name="checkoutTimeout" value="${ac.jdbc.checkoutTimeout}"/>
        </bean>
    
    
        <mybatis:scan base-package="com.petkit.ac.adaptor.mapper.chain" factory-ref="mybatisSqlSessionFactoryChain" />
        <bean id="mybatisSqlSessionFactoryChain" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSourceChain"/>
            <property name="configLocation" value="classpath:/mybatis-config.xml"/>
            <property name="mapperLocations" value="classpath*:/config/mapper/chain/*.xml"/>
        </bean>
    
        <mybatis:scan base-package="com.petkit.ac.adaptor.mapper.app" factory-ref="mybatisSqlSessionFactoryApp" />
        <bean id="mybatisSqlSessionFactoryApp" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSourceApp"/>
            <property name="configLocation" value="classpath:/mybatis-config.xml"/>
            <property name="mapperLocations" value="classpath*:/config/mapper/app/*.xml"/>
        </bean>
    
    </beans>
    

    相关文章

      网友评论

        本文标题:mybatis 多数据源配置

        本文链接:https://www.haomeiwen.com/subject/rydblxtx.html