博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web项目中配置多个数据源
阅读量:5278 次
发布时间:2019-06-14

本文共 2633 字,大约阅读时间需要 8 分钟。

web项目中配置多个数据源

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

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

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

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

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

具体讲解方法1:

(一)配置

[html]
  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>  

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

[java]
  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. }  

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

[java]
  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

[java]
  1.   
[java]
  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. }  

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

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

ok了

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

转载于:https://www.cnblogs.com/wangting888/p/9701947.html

你可能感兴趣的文章
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
排序sort (一)
查看>>
Parrot虚拟机
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Struts2学习(三)
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>