Spring+MyBatis多数据源配置实现
public class MultipleDataSource extends AbstractRoutingDataSource {
private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>();
public static void setDataSourceKey(String dataSource) {
dataSourceKey.set(dataSource);
}
@Override
protected Object determineCurrentLookupKey() {
return dataSourceKey.get();
}
public void setDataSourcedefault (){
MultipleDataSource.setDataSourceKey("sqlDataSource");
}
public void setDataSource(){
MultipleDataSource.setDataSourceKey("myDataSource");
}
}
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.16.139:3306/szx
username=***
password=***
mydriver=com.mysql.jdbc.Driver
myurl=jdbc:mysql://192.168.16.139:3306/szxnw
myusername=***
mypassword=***
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
<bean id="sqlDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${mydriver}" />
<property name="url" value="${myurl}" />
<property name="username" value="${myusername}" />
<property name="password" value="${mypassword}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<bean id="multipleDataSource" class="com.sc.common.MultipleDataSource">
<property name="defaultTargetDataSource" ref="sqlDataSource"/>
<property name="targetDataSources">
<map>
<entry key="dataSource" value-ref="sqlDataSource"/>
<entry key="myDataSource" value-ref="myDataSource"/>
</map>
</property>
</bean>