浅谈ssm配置多个数据源

spring + mybatis 多数据源配置有两种解决方案

1、配置多个不同的数据源,使用一个sessionFactory,在业务逻辑使用的时候自动切换到不同的数据源,   有一个种是在拦截器里面根据不同的业务现切换到不同的datasource;

   有的会在业务层根据业务来自动切换。

2、在spring项目中配置多个不同的数据源datasource,配置多个sqlSessionFactory,每个sqlSessionFactory对应一个datasource      在dao 层根据不同业务自行选择使用哪个数据源的session来操作。

      使用请参考文章:http://blog.csdn.net/zhmz1326/article/details/52041918

具体讲解方法1:

(一)配置



















































 

(二)创建数据源名称常量类

@SuppressWarnings("all")

public class DataSourceType {


public static final String SOURCE_MYSQL = "mysql_dataSource";


public static final String SOURCE_POSTGS = "postgs_dataSource";


}
 

(三)创建负责切换数据源的类

public class DataSourceContextHolder {

private static final ThreadLocal contextHolder = new ThreadLocal();


public static void setDbType(String dbType) {

contextHolder.set(dbType);

}


public static String getDbType() {

return ((String) contextHolder.get());

}


public static void clearDbType() {

contextHolder.remove();

}

}

 

(四) 建立动态数据源类,该类必须继承AbstractRoutingDataSource,且实现方法determineCurrentLookupKey

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


public class DynamicDataSource extends AbstractRoutingDataSource{


@Override

protected Object determineCurrentLookupKey() {

return DataSourceContextHolder. getDbType();

}


}

 

 

(五)当需要使用某个数据库的时候,使用下面一行代码进行切换

//切换数据库

DataSourceContextHolder.setDbType(DataSourceType.SOURCE_POSTGS);
原文地址:https://blog.csdn.net/qq_37936542/article/details/78550424

你可能感兴趣的:(java)