码迷,mamicode.com
首页 > 编程语言 > 详细

spring+mybatis+springMVC框架配置多数据源

时间:2020-07-13 22:00:17      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:tar   thread   ctr   move   切换数据库   ted   xtend   stat   thold   

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");

 

spring+mybatis+springMVC框架配置多数据源

标签:tar   thread   ctr   move   切换数据库   ted   xtend   stat   thold   

原文地址:https://www.cnblogs.com/lusaisai/p/13295560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!