一、配置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;
public class DynamicDataSource extends AbstractRoutingDataSource {
public static final String ORACLE_DATA_SOURCE = "oracleDataSource";
public static final String SQL_SERVER_DATA_SOURCE = "sqlServerDataSource";
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']}" />