双数据源配置(一个项目中链接两个数据库)

resin文件配置(我用的resin,其他的可自行配置)

	jdbc/OracleDB
	
		
		
		 jdbc:oracle:thin:@192.168.1.9:1521:orcl
		ycg
		ycg
		
	
	8
	20
	30s
    
    
      
	jdbc/mysqlDB
	
		jdbc:mysql://39.98.47.52:3306/dev-idr
		admin
		mySteel2019,!@#
		
	
	8
	20
	30s
    

1.  然后写一个数据源持有类:

package org.thcic.ejw.components.datatable;

public class DataSourceHolder {
	private static final ThreadLocal contextHolder = new ThreadLocal();

    /**
     * @Description: 设置数据源类型
     * @param dataSourceType  数据库类型
     * @return void
     * @throws
     */
    public static void setDataSourceType(String dataSourceType) {
        contextHolder.set(dataSourceType);
    }

    /**
     * @Description: 获取数据源类型
     * @return String
     * @throws
     */
    public static String getDataSourceType() {
        return contextHolder.get();
    }

    /**
     * @Description: 清除数据源类型
     * @return void
     * @throws
     */
    public static void clearDataSourceType() {
        contextHolder.remove();
    }


}

  2. 写一个数据源路由类

package org.thcic.ejw.components.datatable;

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

public class RoutingDataSource extends AbstractRoutingDataSource {

	@Override
	protected Object determineCurrentLookupKey() {
		
		return DataSourceHolder.getDataSourceType();
	}
 
}

  

3. 配置数据源路由


    
        
        
            
                
                
            
        
        
        
    

 

4. spring整合


	
		
		
			
				${dataSource.hibernate.dialect}
				true
				utf-8
				${dataSource.hibernate.show_sql}
				50
			
		
		  
			  
				org.thcic.ejw.sys.vo  
				org.thcic.ejw.purchase.setting.vo  
				org.thcic.ejw.purchase.inquiry.vo
				org.thcic.ejw.purchase.notice.vo  
				org.thcic.ejw.purchase.bid.vo
				org.thcic.ejw.purchase.report.vo  
             
        
	

  

5.双jdbcTemplate配置


	
        
    
    
    
        
    

  

6.使用数据源

/*jdbcTemplate的使用*/
@Autowired
    @Qualifier("oracleJdbcTemplate")
    private JdbcTemplate dbTwojdbcTemplate;

    @Autowired
    @Qualifier("mysqlJdbcTemplate")
    private JdbcTemplate dbOneJdbcTemplate;


/*数据源切换*/
//获取数据源类型
DataSourceHolder.getDataSourceType();
//设置为 db1 的数据源
DataSourceHolder.setDataSourceType("db1");
//设置为 db2 的数据源
DataSourceHolder.setDataSourceType("db2");

  

 

转载于:https://www.cnblogs.com/HHR-SUN/p/11187408.html

你可能感兴趣的:(双数据源配置(一个项目中链接两个数据库))