`

Spring MVC+MyBatis框架使用多个数据源以及之间的切换

阅读更多
至于怎么搭建Spring MVC+MyBatis框架,我这里就不详细说了,可以参考:http://xieke90.iteye.com/blog/2241054

一、同时使用多个数据源

   以下实例演示同时使用两个数据源:

   <1>、applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-2.5.xsd"
       default-init-method="init">    
     
    <!-- 引入jdbc配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    
    <!--创建jdbc数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
    </bean>
    <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url2}" />
        <property name="username" value="${username2}" />
        <property name="password" value="${password2}" />
    </bean>
 
    <!-- 创建SqlSessionFactory,同时指定数据源 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
         <!-- 配置sql映射文件所在位置  注意:默认与mapper类位置相同   -->
        <property name="mapperLocations" value="classpath:sqlmap/car/*.xml" />
    </bean>
    <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource2" />
        <property name="mapperLocations" value="classpath:sqlmap/order/*.xml" />
    </bean>
 
    <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xieke.test.mapper.car" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <!-- 默认情况下会自动注入id=sqlSessionFactory的bean,也可以按上述方式指定sqlSessionFactory -->
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xieke.test.mapper.order" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory2" />
    </bean>
    
</beans>

   <2>、jdbc.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/test
username=root
password=999999

url2=jdbc:mysql://localhost:3306/test2
username2=root
password2=999999

   <3>、以上是主要的配置,其它配置跟配置Spring MVC是一样的,详细情况请阅读下面的源代码。

 

二、数据源之间的切换

   以下演示两个数据源之间的切换:

   <1>、applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-2.5.xsd"
       default-init-method="init">    
     
    <!-- 引入jdbc配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    
    <!--创建jdbc数据源 -->
    <bean id="dataSourceA" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${a.url}" />
        <property name="username" value="${a.username}" />
        <property name="password" value="${a.password}" />
    </bean>
    <bean id="dataSourceB" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${b.url}" />
        <property name="username" value="${b.username}" />
        <property name="password" value="${b.password}" />
    </bean>
    
    <!-- 配置dataSource管理key和value的对应,默认选择dataSourceB -->
    <bean id="dataSource" class="com.xieke.test.util.DynamicDataSource">
        <!-- 通过key-value的形式来关联数据源 -->
        <property name="targetDataSources">
                <map key-type="java.lang.String">
                        <entry value-ref="dataSourceA" key="dataSourceA"></entry>
                        <entry value-ref="dataSourceB" key="dataSourceB"></entry>
                </map>
        </property>
        <property name="defaultTargetDataSource" ref="dataSourceB" >
        </property>
    </bean>
 
    <!-- 创建SqlSessionFactory,同时指定数据源 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
         <!-- 配置sql映射文件所在位置  注意:默认与mapper类位置相同   -->
        <property name="mapperLocations" value="classpath:sqlmap/**/*.xml" />
    </bean>

    <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xieke.test.mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <!-- 默认情况下会自动注入id=sqlSessionFactory的bean,也可以按上述方式指定sqlSessionFactory -->
    </bean>
    
</beans>

   <2>、jdbc.properties

driver=com.mysql.jdbc.Driver

a.url=jdbc:mysql://localhost:3306/test
a.username=root
a.password=999999

b.url=jdbc:mysql://localhost:3306/test2
b.username=root
b.password=999999

   <3>、数据源管理类:DynamicDataSource,需要继承AbstractRoutingDataSource。

package com.xieke.test.util;

import java.sql.SQLFeatureNotSupportedException;
import java.util.logging.Logger;

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

public class DynamicDataSource extends AbstractRoutingDataSource
{
    public static final String DATA_SOURCE_A = "dataSourceA";
    public static final String DATA_SOURCE_B = "dataSourceB";
    private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();

    public static void setCustomerType(String customerType)
    {
        contextHolder.set(customerType);
    }

    public static String getCustomerType()
    {
        return contextHolder.get();
    }

    public static void clearCustomerType()
    {
        contextHolder.remove();
    }

    @Override
    protected Object determineCurrentLookupKey()
    {
        return getCustomerType();
    }

    @Override
    public Logger getParentLogger() throws SQLFeatureNotSupportedException
    {
        return null;
    }
}

   <4>、切换数据源时调用setCustomerType方法,比如我要使用dataSourceA,切换代码就是“DynamicDataSource.setCustomerType(DynamicDataSource.DATA_SOURCE_A);”。

   <5>、以上是主要的配置,其它配置跟配置Spring MVC是一样的,详细情况请阅读下面的源代码。

 

三、源代码下载地址

  <1>、同时使用两个数据源实例的源代码下载地址:http://pan.baidu.com/s/1o66a3kI

  <2>、两个数据源之间的切换实例的源代码下载地址:http://pan.baidu.com/s/1sjxgPSp

 

  转载请注明出处:http://xieke90.iteye.com/blog/2259320

 

2
4
分享到:
评论

相关推荐

    spring+spring mvc+mybatis框架整合实现超市货物管理系统

    总的来说,"spring+spring mvc+mybatis框架整合实现超市货物管理系统"是一个涵盖后端开发基础技能的项目,涉及了JavaEE的多个层面,从Web层的路由处理,到业务逻辑的实现,再到数据库操作,以及用户认证和分页显示等...

    Spring MVC + Mybatis+Spring实现的个人博客系统

    这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》_源代码.zip

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》是一本深入探讨Java企业级应用程序开发的书籍,源代码包含多个章节的实例,旨在帮助读者理解和掌握使用Spring、Spring MVC和MyBatis框架进行实际开发的关键...

    Spring+SpringMVC+Mybatis框架整合例子(SSM)

    4. **配置Mybatis**:编写mybatis的配置文件,包含数据源、事务管理器、SqlSessionFactory的配置,以及Mapper XML文件的路径。 5. **编写Mapper接口和XML文件**:定义数据库操作的方法,并在对应的XML文件中编写SQL...

    SSM框架-详细整合教程(Spring+SpringMVC+MyBatis).pdf

    - `spring-mybatis.xml`中配置数据源、事务管理器、MyBatis的SqlSessionFactory以及Mapper扫描器。 - `spring-mvc.xml`中配置DispatcherServlet、视图解析器、拦截器等。 6. **资源文件** - 配置数据库连接的`...

    maven+spring MVC+Mybatis+jetty+mysql

    "maven+spring MVC+Mybatis+jetty+mysql" 的组合是常见的开发栈,它涵盖了项目管理、前端控制器、持久层操作、应用服务器以及数据库管理等多个层面。下面将详细介绍这些关键技术及其在实际应用中的作用。 1. Maven...

    Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-源代码

    Java EE企业级应用开发是构建大型、复杂系统的关键技术,其中Spring、Spring MVC和MyBatis是核心组件,常被组合使用,形成了SSM(Spring + Spring MVC + MyBatis)框架栈。这个教程源代码提供了深入理解这些技术的...

    activiti+spring+srping Mvc+mybatis+maven整合

    本项目是关于"activiti+spring+spring Mvc+mybatis+maven"的整合,旨在创建一个基于Activiti工作流引擎、Spring、Spring MVC、MyBatis以及Maven的开发环境。下面将详细介绍这些技术及其整合过程。 首先,`activiti`...

    Java EE企业级应用开发教程 Spring+Spring MVC+MyBatis 第2版 Jav 第2版源码

    《Java EE企业级应用开发教程》第二版,结合Spring、Spring MVC和MyBatis三大框架,为读者提供了全面深入的Java后端开发学习路径。这本书的源码资源旨在帮助开发者通过实践来理解并掌握企业级应用开发的核心技术。 ...

    spring+springmvc+mybatis三大框架整合案例.zip

    SSM框架整合是Java开发中常见的技术组合,包括Spring、SpringMVC和MyBatis三个核心组件。这个案例是一个小型的项目示例,用于展示如何将这三个框架有效地集成在一起,以构建一个完整的Web应用程序。 首先,Spring...

    spring+springmvc+mybatis

    在实际项目中,开发者通常会创建一个配置文件(如:`springmvc_mybatis1208`可能包含的`spring-config.xml`),在其中配置Spring和MyBatis的相关设置,包括数据源、事务管理器、SqlSessionFactory等。同时,还需要...

    Spring+spring MVC+MyBatis示例

    在Java Web开发中,Spring、Spring MVC和MyBatis是常见的三大框架,它们的整合能够构建出高效、灵活且易于维护的Web应用程序。这个示例程序就是一个典型的三者结合的实例,通过Maven进行构建,涵盖了数据操作的核心...

    Spring+Spring MVC+Mybatis框架搭建

    在Java Web开发中,Spring、Spring MVC和Mybatis是三个非常重要的开源框架,它们的集成使用,被称为"SSM"框架。本项目旨在通过这些框架的整合,搭建一个完整的后端开发环境。以下是对这三个框架及其整合过程的详细...

    spring mvc + mybatis +mysql

    Spring MVC、MyBatis 和 MySQL 是构建现代 Web 应用程序的三大核心技术,它们共同构成了一个强大而灵活的后端架构。Spring MVC 是 Spring 框架的一部分,用于处理 Web 请求;MyBatis 是一个轻量级的持久层框架,简化...

    Spring + Spring MVC+ Mybatis

    整合Spring、Spring MVC和Mybatis,首先需要在Spring的配置文件中声明Mybatis的SqlSessionFactory,并配置数据源。接着,为Spring MVC创建配置文件,定义DispatcherServlet、视图解析器以及MVC的拦截器等。Mybatis的...

    Spring + Spring MVC + MyBatis整合项目(源码)

    Spring、Spring MVC和MyBatis是Java开发中最常用的三大框架,它们共同构建了一个灵活、高效且易于维护的Web应用程序。这个整合项目展示了如何将这三个框架协同工作,为开发者提供了一个全面理解它们集成方式的实例。...

    struts2+spring+mybatis框架

    Spring是一个全面的后端开发框架,涵盖了依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问/集成以及Web应用等多个方面。在Struts2+Spring整合中,Spring负责业务层对象的管理,提供IOC(Inversion of ...

    图书管理系统(Spring + Spring MVC + MyBatis).zip

    基于Spring Spring MVC MyBatis的图书馆管理系统,使用Maven进行包管理。主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 环境配置 开发环境:Windows 10,IntelliJ ...

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    SSM框架Spring+Spring MVC+Mybatis整合详解

    SSM框架指的是Spring、Spring MVC和Mybatis这三个Java开发框架的整合。它们各自在Java企业级应用开发中扮演着不同的角色,但整合在一起可以发挥更大的效用,简化开发流程。 Spring是一个开源框架,最早由Rod ...

Global site tag (gtag.js) - Google Analytics