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

  • 相关阅读:
    AS将一个项目导入到另一个项目中
    Android Studio出现:Cause: unable to find valid certification path to requested target
    小米手机Toast带app名称
    PopupWindow 点击外部区域无法关闭的问题
    EditText inputType类型整理
    Fragment通过接口回调向父Activity传值
    Android selector一些坑
    Installation failed with message Failed to commit install session 634765663 with command cmd package
    旷视上海研究院机器人方向招聘
    语义SLAM的数据关联和语义定位(四)多目标测量概率模型
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701947.html
Copyright © 2011-2022 走看看