zoukankan      html  css  js  c++  java
  • web项目中配置多个数据源

    web项目中配置多个数据源

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

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

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

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

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

    具体讲解方法1:

    (一)配置

    1. <!-- 配置mysql -->  
    2.     <bean id="mysql_dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    3.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
    4.         <property name="url" value="jdbc:mysql://127.0.0.1:3306/colleges" />  
    5.         <property name="username" value="root" />  
    6.         <property name="password" value="root" />  
    7.     </bean>  
    8.       
    9.     <!-- 配置postgs -->  
    10.      <bean id="postgs_dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    11.         <property name="driverClassName" value="org.postgresql.Driver" />  
    12.         <property name="url" value="jdbc:postgresql://114.215.83.3:5432/coges" />  
    13.         <property name="username" value="postgres" />  
    14.         <property name="password" value="postgres" />  
    15.     </bean>  
    16.       
    17.     <!-- 配置动态数据源 -->  
    18.      <bean id ="dataSource" class"com.mote.dc.changedb.DynamicDataSource" >    
    19.           <property name ="targetDataSources">    
    20.                 <map key-type ="java.lang.String">    
    21.                       <entry value-ref ="postgs_dataSource" key"postgs_dataSource"></entry >    
    22.                       <entry value-ref ="mysql_dataSource" key"mysql_dataSource"></entry >    
    23.                 </map >    
    24.           </property>    
    25.           <!-- 默认使用mysql -->    
    26.           <property name ="defaultTargetDataSource" ref"mysql_dataSource"></property >        
    27.    </bean>  


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

    1. @SuppressWarnings("all")  
    2. public class DataSourceType {  
    3.       
    4.     public  static final String  SOURCE_MYSQL = "mysql_dataSource";  
    5.       
    6.     public  static final String  SOURCE_POSTGS = "postgs_dataSource";  
    7.   
    8. }  


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


    1. public class DataSourceContextHolder {  
    2.     private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();    
    3.         
    4.     public static void setDbType(String dbType) {    
    5.            contextHolder.set(dbType);    
    6.     }    
    7.    
    8.     public static String getDbType() {    
    9.            return ((String) contextHolder.get());    
    10.     }    
    11.    
    12.     public static void clearDbType() {    
    13.            contextHolder.remove();    
    14.     }    
    15. }  


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


    1.   
    1. import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;  
    2.   
    3. public class DynamicDataSource extends AbstractRoutingDataSource{  
    4.   
    5.     @Override  
    6.     protected Object determineCurrentLookupKey() {  
    7.         return DataSourceContextHolder. getDbType();  
    8.     }  
    9.   
    10. }  


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


    1. //切换数据库  
    2. DataSourceContextHolder.setDbType(DataSourceType.SOURCE_POSTGS);  


    ok了

    原文链接:http://blog.csdn.net/qq_37936542/article/details/78550424

  • 相关阅读:
    Powershell数据处理
    Powershell About Active Directory Group Membership of a domain user
    Powershell About Active Directory Server
    Oracle Schema Objects——Tables——TableStorage
    Oracle Schema Objects——Tables——TableType
    English Grammar
    Oracle Database Documentation
    Oracle Schema Objects——Tables——Oracle Data Types
    Oracle Schema Objects——Tables——Overview of Tables
    What is Grammar?
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701946.html
Copyright © 2011-2022 走看看