web项目中配置多个数据源

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);

 

 

 

 

 

ok了

你可能感兴趣的:(java杂记)