项目中两种数据源的切换(针对项目中不同的数据库使用不同的数据源)

  那天接触公司项目,发现使用的是两种数据库,一个是SqlServer,一个是医院的oracle数据库,但是查询数据的时候不能够一起查询,需要自己去手动切换数据源

  在Spring-Mybatis中,有这样一个类AbstractRoutingDataSource,根据名字可以猜到,这是一个框架提供的用于动态选择数据源的类。这个类有两个重要的参数,分别叫

defaultTargetDataSource和targetDataSources。一般的工程都是一个数据源,所以不太接触到这个类。

  下面是我们配置的xml中的数据源

   









































































 

选择线程类

  

public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return CustomerContextHolder.getCustomerType();
}
}

具体的怎么去选择,使用哪个类去选择

public class CustomerContextHolder {
public static final String DATA_SOURCE_BASE = "basedataSource";
public static final String DATA_SOURCE_HIS = "hisdataSource";
//用ThreadLocal来设置当前线程使用哪个dataSource
private static final ThreadLocal contextHolder = new ThreadLocal();
public static void setCustomerType(String customerType) {
contextHolder.set(customerType);
}
public static String getCustomerType() {
String dataSource = contextHolder.get();
if (Util.isEmpty(dataSource)) {
return DATA_SOURCE_BASE;
}else {
return dataSource;
}
}
public static void clearCustomerType() {
contextHolder.remove();
}
}

这只是实现方式的一种,是一种比较简单的实现方式,还有其他的我就不介绍了

转载于:https://www.cnblogs.com/yld77/p/9262482.html

你可能感兴趣的:(项目中两种数据源的切换(针对项目中不同的数据库使用不同的数据源))