zoukankan      html  css  js  c++  java
  • spring+mybatis+springMVC框架配置多数据源

    1.在spring配置文件中配置

    <!--第一个数据源-->
        <!-- 配置c3p0 数据源 -->
        <bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driver}"></property>
            <property name="jdbcUrl" value="${jdbc.url}"></property>
            <property name="user" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>
        <!-- 配置事务管理器 -->
        <bean id="txManager"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 这里可以指定默认的数据源 -->
            <property name="dataSource" ref="dataSource1"></property>
        </bean>
    
        <!--第2个数据源-->
         <!--配置c3p0 数据源2 -->
        <bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc2.driver}"></property>
            <property name="jdbcUrl" value="${jdbc2.url}"></property>
            <property name="user" value="${jdbc2.username}"></property>
            <property name="password" value="${jdbc2.password}"></property>
        </bean>
        <!-- 配置事务管理器 -->
        <bean id="txManager2"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 这里可以指定默认的数据源 -->
            <property name="dataSource" ref="dataSource2"></property>
        </bean>
    
        <!-- 下面的是切换数据库的自定义类,配置文件的配置多数源映射关系 -->
        <bean id="multipleDataSource" class="com.pdzx.util.DynamicDataSource">
            <property name="defaultTargetDataSource" ref="dataSource1"></property>
            <property name="targetDataSources">
                <map>
                    <entry key="dataSource1" value-ref="dataSource1"></entry>
                    <entry key="dataSource2" value-ref="dataSource2"></entry>
                </map>
            </property>
        </bean>

    2.继承AbstractRoutingDataSource

    public class DBContextHolder {
    
        private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
        public static void setDbType(String dbType) {
            contextHolder.set(dbType);
        }
        public static String getDbType() {
            return ((String) contextHolder.get());
        }
        public static void clearDbType() {
            contextHolder.remove();
        }
    
    }
    public class DynamicDataSource extends AbstractRoutingDataSource {
        @Override
        protected Object determineCurrentLookupKey() {
            return DBContextHolder.getDbType();
        }
    }

    3.切换数据库

    //指定数据库
    DBContextHolder.setDbType("dataSource1");
  • 相关阅读:
    第一章
    第一章 计算机系统漫游
    hihocoder #1014 : Trie树
    第一章
    来个小目标
    poj 1056 IMMEDIATE DECODABILITY
    poj 2001 Shortest Prefixes
    __name__ 指示模块应如何被加载
    Python 常用函数time.strftime()简介
    CentOS安装beEF做XSS平台
  • 原文地址:https://www.cnblogs.com/lusaisai/p/13295560.html
Copyright © 2011-2022 走看看