spring+mybatis多数据源的配置

解决方案:

多套sqlSessionFactory,针对不同的数据源

数据源


	
		peccancy
		jdbc:oracle:thin:@172.16.60.46:1521:orcl
		oracle.jdbc.driver.OracleDriver
		
			
			
		
		...
	
	
		yhtepap
	 	jdbc:oracle:thin:@172.16.60.46:1521:orcl
		oracle.jdbc.driver.OracleDriver
		
			
			
		
		...
	

 1.方法一

  
	  
		org.logicalcobwebs.proxool.ProxoolDriver  
	  
	  
		proxool.peccancy  
	  
  
  
	  
		org.logicalcobwebs.proxool.ProxoolDriver  
	  
	  
		proxool.pap  
	  
 

  


	
	
		
			classpath:net/yhte/common/query/mapper/PageData_Mapper.xml
			classpath*:net/yhte/web/peccancy/**/mapper/*Mapper.xml
		
	


	
	


	
	
		
			classpath*:net/yhte/web/pap/**/mapper/*Mapper.xml
			classpath:net/yhte/common/query/mapper/PageData_Mapper.xml
		
	


	
	

 本方案需要根据数据源的不同对*Mapper.xml进行分包处理,便于配置,同一个包下的*Mapper.xml如果对应的数据源不同,则不方便使用通配符进行统一扫描配置,且sqlSessionFactory扫包的basePackage 也需要分包

2.使用自定义注解来取代spring的repository设置到annotationClass中。这样每个mapper文件中注入相应的注解@PapRepository,@PeccancyRepository

 改成

  配置文件如下:


		
		
			
				classpath:net/yhte/common/query/mapper/PageData_Mapper.xml
				classpath*:net/yhte/web/**/mapper/*Mapper.xml
			
		
	
	
		
		
		
	
	
		
		
			
				classpath:net/yhte/common/query/mapper/PageData_Mapper.xml
				classpath*:net/yhte/web/**/mapper/*Mapper.xml
			
		
	
	
		
		
		
	

 如上所配置使用pap的mapper文件就加上注解@PapRepository

public @interface PeccancyRepository {

}

public @interface PapRepository {

}

 

 

// 使用dataSource_pap 数据源  
@PapRepository
public interface UserMapper {
	List find(UserQueryBean userQueryBean);
}
// 使用dataSource_peccancy 数据源  
@PeccancyRepository
public interface ParameterMapper{

    List find(ParameterQueryBean queryBean);
}

 

你可能感兴趣的:(mybatis,java,数据库)