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

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

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

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

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

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

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

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

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

ok了

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

web项目中配置多个数据源的更多相关文章

  1. 如何在web项目中配置Spring的Ioc容器

    在web项目中配置Spring的Ioc容器其实就是创建web应用的上下文(WebApplicationContext) 自定义要使用的IoC容器而不使用默认的XmlApplicationContext ...

  2. Log4j2在WEB项目中配置

    最近决定在新WEB项目中使用新的日志系统Log4j2. 官方介绍和学习文档网址为http://logging.apache.org/log4j/2.x/ 首先在WEB项目中引入以下几个jar包: ① ...

  3. 转载 Log4j2在WEB项目中配置

    最近决定在新WEB项目中使用新的日志系统Log4j2. 官方介绍和学习文档网址为http://logging.apache.org/log4j/2.x/ 首先在WEB项目中引入以下几个jar包: ① ...

  4. 如何在Web项目中配置Spring MVC

    要使用Spring MVC需要在Web项目配置文件中web.xml中配置Spring MVC的前端控制器DispatchServlet <servlet> <servlet-name ...

  5. 在web项目中配置log4j

    在web.xml中添加如下代码 <context-param> <param-name>contextConfigLocation</param-name> < ...

  6. day63-webservice 08.在web项目中配置带有接口的webservice服务

    这个是配置带有接口的WebService的服务. http://localhost:8080/cxf-web-server/service 带有接口的实现类也给它做好了.jaxws:endpoint是 ...

  7. SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例

     要搭建的项目的项目结构如下(使用的框架为:Spring.SpingMVC.MyBatis): 2.pom.xml中的配置如下(注意,本工程分为几个小的子工程,另外两个工程最终是jar包): 其中 ...

  8. Java Web项目中连接Access数据库的配置方法

    本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...

  9. Spring在Web项目中的三种启动加载的配置

    在最近的项目中,使用到了spring相关的很多东西,有点把spring的配置给搞混了,从网上查到的资料以及整理了一下. 在Web项目中,启动spring容器的方式有三种,ContextLoaderLi ...

随机推荐

  1. OSX: 逻辑卷管理系统Core Storage(1)

    Mac高大上嘛? Mac由于贵就高大上了?Mac由于没有这个哪个就不高大上了?本文没有结论,仅仅是回归技术本源,是不是高大上还要大家自己评说. 大多数Mac用户可能并不在乎苹果的OS X操作系统缺少一 ...

  2. 用电脑从Google Play下载apk

    用电脑从Google Play下载apk 方法一:给Chrome浏览器安装apk-downloader插件,需禁止 SSL 错误警告,即在Chrome的快捷方式上加入"--ignore-ce ...

  3. Android 6.0 最简单的权限获取方法 RxPermition EasyPermition

    Android 6.0 要单独的获取权限 这里提供两种很简单的方法 EasyPermition RxPermition EasyPermition https://github.com/googles ...

  4. JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系

    JSP(JAVA SERVER PAGE)的缩写,其本身就是servlet的简化,是一种动态网页标准,其特点是在HTML代码中嵌入JAVA代码,JSP标签或用户标签来生成网页.至于它为什么会出现,主要 ...

  5. 软件——python,主函数

    1;; 如何在spyder中运行python程序 如下图,   写入一个输出  ' hellow word '的程序 然后点击运行按钮就可以运行了.

  6. CSS笔记 - fgm练习 2-7 - 简易选项卡

    练习地址 http://www.fgm.cc/learn/lesson2/07.html <style> body,ul,li{margin:0;padding:0;} body{font ...

  7. 装饰模式和python装饰器

    装饰器和装饰模式 先给出两者的定义: - 装饰器:装饰器是一个非常著名的设计模式,常常被用于有切面需求的场景.较为经典的有插入日志.性能測试.事务处理等. 装饰器是解决这类问题的绝佳设计.有了装饰器, ...

  8. 介绍linux设备驱动编程

    目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):       主要利用C库函数和Linux API进行应用 ...

  9. 四种卸载Mac软件的方法

    从 Mac 电脑上卸载已经安装的应用程序可能是你知道的操作系统里面最简单的一种了.而如果你是一名新买了 Mac 电脑的用户,那么你可能比较困惑:怎么没有控制面板中的相应板块来卸载它们呢?但是其实你想不 ...

  10. <转> Intel VTune分析结果中的名词释译

    原文转自http://blog.chinaunix.net/uid-26000296-id-3369740.html Elapsed Time(执行耗时): the total time your t ...