`

如何在spring中配置使得mybatis3.1.1中支持vendor方式的multi-db(多数据库)

阅读更多

问题起源:

同一个项目适应多种数据库,基本上是企业应用的常见需求。以往在mybatis中的支持是通过扩展dao而来实现的,参考:

http://code.google.com/p/mybatis/issues/detail?id=21.

问题解决:

而在mybatis3.1.0之后就内在的支持multi-db了,可以在select/update/delete/insert加上databaseId的方式来标识不同的数据库,也可以直接使用属性<if test="_databaseId == 'MySQL'">来判断不同的数据库。那如何在spring中集成mybatis使其支持multi-db的特性呢?在mybatis的官方文档中并没有具体说明,后来通过查看源码而得到的配置。

  下面的vendorProperties中key的值是通过数据库产品的名称来的:

private String getDatabaseProductName(DataSource dataSource) throws SQLException {
    Connection con = null;
    try {
      con = dataSource.getConnection();
      DatabaseMetaData metaData = con.getMetaData();
      return metaData.getDatabaseProductName();
    } finally {
      if (con != null) {
        try {
          con.close();
        } catch (SQLException e) {
          // ignored
        }
      }
    }
  }

 

 得到主要的spring中的配置项如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations" value="classpath:datasource.properties"/>
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.usename}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="vendorProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="properties">
            <props>
                <prop key="SQL Server">sqlserver</prop>
                <prop key="DB2">db2</prop>
                <prop key="Oracle">oracle</prop>
                <prop key="MySQL">mysql</prop>
            </props>
        </property>
    </bean>

    <bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
         <property name="properties" ref="vendorProperties"/>
    </bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="mapperLocations" value="classpath*:DYCloudTaskMapper.xml" />
       <property name="dataSource" ref="dataSource" />
       <property name="databaseIdProvider" ref="databaseIdProvider"/>
    </bean>


    <bean id="DYCloudTaskMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="DYCloudTaskMapper" />
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>

</beans>
分享到:
评论

相关推荐

    mybatis3.1.1+mybatis-generator-core-1.3.2+mybatis-spring1.1.1

    包内提供 spring + mybatis 所需要的先关jar 和 xml 生成插件 包括mybatis-3.1.1-bundle.zip mybatis-generator-core-1.3.2-bundle.zip mybatis-spring-1.1.1-bundle.zip

    mybatis的jar包mybatis-3.1.1.jar与mybatis-spring-1.1.1.jar

    1. **添加依赖**:在项目中引入mybatis-3.1.1.jar和mybatis-spring-1.1.1.jar,确保项目可以正确识别这两个库。 2. **配置SqlSessionFactory**:在Spring配置文件中定义SqlSessionFactoryBean,指定数据源和MyBatis...

    springMVC+spring4.0+mybatis3.1.1+restful

    SSM框架是Java web开发中常用的三大框架Spring MVC、Spring和MyBatis的组合,这里的"4.0"和"3.1.1"分别指的是Spring框架和MyBatis框架的版本号。Spring MVC作为Spring的一部分,负责处理HTTP请求,Spring则提供了...

    spring mvc 4.1.5+mybatis-3.1.1+easyui

    总的来说,"spring mvc 4.1.5+mybatis-3.1.1+easyui"的组合提供了一套完整的后端开发解决方案,涵盖了从后端逻辑处理、数据持久化到前端展示的全过程。这样的技术栈不仅保证了开发效率,也确保了系统的稳定性和安全...

    mybatis-3.1.1jar包

    在"压缩包子文件的文件名称列表"中,只提到了"mybatis-3.1.1",这通常意味着压缩包内可能包含了MyBatis-3.1.1的所有核心类库,包括`mybatis-3.1.1.jar`本身,以及可能的依赖如`log4j`、`slf4j`的日志库,或者`dom4j`...

    mybatis-3.1.1 jar包 mysql-connector-java-5.1.18 jar包

    在本场景中,我们关注的是"Mybatis-3.1.1.jar"和"mysql-connector-java-5.1.18.jar"这两个jar包。 首先,"mybatis-3.1.1.jar"是MyBatis的核心库,包含了MyBatis框架的所有功能。MyBatis的主要特点包括: 1. 易于...

    spring3.1.1+mybatis3.1.1+注解+mysql5.1.50

    结合网上教程,添加一些自己针对性的练习(在web下测试运行效果) 1:以root用户进入mysql自带的数据库mysql 2:把pet.sql脚本放置到任意...4:myeclipse下导入项目,运行即可(需要注意的细节在配置文件都有注释)。

    maven之spring3.1.1+mybatis3.1.1整合

    以前用习惯了Hibernate, 开始接触Mybatis,同样是ORM, MyBatis确实很轻巧,正好也可以自己练练SQL,整合了maven版的spring3.1.1 + mybatis3.1.1,希望对你有帮助。

    spring3.1.1-mybatis3.1.1-struts2.3.4.1所有整合jar包

    标题 "spring3.1.1-mybatis3.1.1-struts2.3.4.1所有整合jar包" 暗示了这是一个用于构建基于Java的Web应用程序的集成框架,其中包含了Spring 3.1.1、MyBatis 3.1.1和Struts2 2.3.4.1的核心库。这些技术都是企业级Java...

    mybatis-plus-boot-starter-3.1.1.jar

    java运行依赖jar包

    spring + springmvc + mybatis 整合 及 mybatis-pagehelper分页

    3. **配置MyBatis**:在MyBatis的配置文件`mybatis-config.xml`中,配置数据源、事务工厂和映射文件的位置。同时,每个Mapper接口需要与对应的XML映射文件关联。 4. **PageHelper分页插件**:MyBatis-PageHelper是...

    spring3.2.4+mybatis3.1.1 框架搭建

    Spring 3.2.4版本在之前的版本基础上,增强了对Java配置的支持,使得我们可以使用Java类替代XML配置文件,这大大简化了配置工作。此外,该版本还提升了对AspectJ注解的支持,使得AOP操作更加便捷。在本项目中,...

    MyBatis3.1.1.zip官方文档(所有)

    在这个"MyBatis3.1.1.zip"压缩包中,包含的是MyBatis 3.1.1版本的官方文档,这个文档集为开发者提供了全面的指南和参考资料。 MyBatis 的核心组件包括: 1. **SqlSessionFactory**: 这是MyBatis的主要入口点,负责...

    mybatis-3.1.1-bundle.zip

    压缩包子文件的文件名称列表只列出了"mybatis-3.1.1",可能是因为在压缩包内部,mybatis-3.1.1.jar是唯一的一个主要文件,或者其他的jar包或资源文件被放置在该目录下。完整的MyBatis框架可能还包括如log4j、slf4j等...

    mybatis-3.1.1.jar mybatis-3.2.2.jar mybatis-3.2.7.jar

    标题中的"mybatis-3.1.1.jar"、"mybatis-3.2.2.jar"和"mybatis-3.2.7.jar"代表MyBatis框架的不同版本。每个版本都可能包含对先前版本的改进、新功能、性能优化以及错误修复。例如: - MyBatis 3.1.1:这是MyBatis的...

    MyBatis整合Spring中间件jar包 mybatis-spring-1.3.0.jar

    MyBatis-Spring还提供了一种方式,使得在DAO层可以直接使用Spring的依赖注入(DI)来操作数据库。传统的MyBatis中,我们通常会创建一个Mapper接口,然后手动实现这个接口,但在Spring环境中,MyBatis-Spring可以帮助...

    Swing+Spring-3.1.1+Mybatis-3.1.1+C3p0-0.9.1.2+Sqlite 实现Swing版网络爬虫

    标题中的“Swing+Spring-3.1.1+Mybatis-3.1.1+C3p0-0.9.1.2+Sqlite 实现Swing版网络爬虫”是一个集成开发项目,它利用了一系列Java技术来构建一个基于Swing的网络爬虫应用程序。这个项目的核心组件包括: 1. **...

    spring3.1.2+mybatis3.1.1

    1. **配置文件**:如`applicationContext.xml`用于Spring的配置,`mybatis-config.xml`用于MyBatis的配置。这些文件会定义bean、数据源、事务管理器、SqlSessionFactory等关键组件。 2. **Mapper接口和XML映射文件*...

    mybatis-3.2.0-SNAPSHOT.jar mybatis-spring-1.1.1.jar

    4. **Spring注解支持**:mybatis-spring支持Spring的`@Autowired`和`@Transactional`注解,使得MyBatis的使用更加符合Spring的编程风格。 5. **MapperFactoryBean**:这个类用于创建Mapper实例,它可以将MyBatis的...

Global site tag (gtag.js) - Google Analytics