Spring配置多数据源并动态切换数据源

一、配置jdbc.properties属性文件
# MySQL
jdbc.mysql.driver=com.mysql.jdbc.Driver
jdbc.mysql.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
jdbc.mysql.username=root
jdbc.mysql.password=root
 
# MS SQL Server (JTDS)
jdbc.sqlserver.driver=net.sourceforge.jtds.jdbc.Driver
jdbc.sqlserver.url=jdbc:jtds:sqlserver://127.0.0.1:1433/test
jdbc.sqlserver.username=root
jdbc.sqlserver.password=root

# Oracle
jdbc.oracle.driver=oracle.jdbc.driver.OracleDriver
jdbc.oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:test
jdbc.oracle.username=root
jdbc.oracle.password=root

# 通用配置
jdbc.initialSize=5
jdbc.minIdle=5
jdbc.maxIdle=20
jdbc.maxActive=100
jdbc.maxWait=100000
二、添加动态数据源切换的类
package com.mi.core;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * 动态切换数据源
 * @author 
 *
 */
public class DynamicDataSource extends AbstractRoutingDataSource {
   

	public static final String ORACLE_DATA_SOURCE = "oracleDataSource";

	public static final String SQL_SERVER_DATA_SOURCE = "sqlServerDataSource";

	// 本地线程,获取当前正在执行的currentThread
	public static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();

	public static void setCustomerType(String customerType) {
   
		contextHolder.set(customerType);
	}

	public static String getCustomerType() {
   
		return contextHolder.get();
	}

	public static void clearCustomerType() {
   
		contextHolder.remove();//清除数据源
	}

	@Override
	protected Object determineCurrentLookupKey() {
   
		return getCustomerType();
	}

}
三、配置spring-jdbc.xml
	<util:properties id="jdbc"
			location="classpath:properties/jdbc.properties" />
		
	<bean id="oracleDataSource" class="com.alibaba.druid.pool.DruidDataSource"
		destroy-method="close">
		<property name="driverClassName" value="#{jdbc['jdbc.oracle.driver']}" />
		<property name="url" value="#{jdbc['jdbc.oracle.url']}" />
		<property name="username" value="#{jdbc['jdbc.oracle.username']}" />
		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值