问题起源:
同一个项目适应多种数据库,基本上是企业应用的常见需求。以往在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>
相关推荐
包内提供 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-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-...
赠送jar包:mybatis-spring-2.0.0.jar; 赠送原API文档:mybatis-spring-2.0.0-javadoc.jar; 赠送源代码:mybatis-spring-2.0.0-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.0.pom; 包含翻译后的API...
结合网上教程,添加一些自己针对性的练习(在web下测试运行效果) 1:以root用户进入mysql自带的数据库mysql 2:把pet.sql脚本放置到任意...4:myeclipse下导入项目,运行即可(需要注意的细节在配置文件都有注释)。
以前用习惯了Hibernate, 开始接触Mybatis,同样是ORM, MyBatis确实很轻巧,正好也可以自己练练SQL,整合了maven版的spring3.1.1 + mybatis3.1.1,希望对你有帮助。
java运行依赖jar包
使用的是spring mvc 4.1.5+mybatis-3.1.1+easyui一套框架,具有简单的权限管理
mybatis-spring-1.1.1.jar 与 mybatis-3.1.1.jar 打包
SSM搭建的maven开发环境,版本较新,支持restful接口调用
赠送jar包:mybatis-spring-2.0.5.jar; 赠送原API文档:mybatis-spring-2.0.5-javadoc.jar; 赠送源代码:mybatis-spring-2.0.5-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.5.pom; 包含翻译后的API...
赠送jar包:mybatis-spring-boot-autoconfigure-1.3.2.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-1.3.2-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-1.3.2-sources.jar; 赠送...
spring3.1-mybatis3.1.1-struts2.3.4.1目前(2012-09-29 15:08:00)最新的所有整合jar包,直接拷贝之项目的WEB-INF 下面直接搞定 自己整理的
MyBatis3.1.1.zip官方文档(所有)
赠送jar包:mybatis-spring-1.3.1.jar; 赠送原API文档:mybatis-spring-1.3.1-javadoc.jar; 赠送源代码:mybatis-spring-1.3.1-sources.jar; 包含翻译后的API文档:mybatis-spring-1.3.1-javadoc-API文档-中文...
mybatis-spring-1.3.1 和mybatis-3.4.4所有jar包mybatis-spring-1.3.1 和mybatis-3.4.4所有jar包mybatis-spring-1.3.1 和mybatis-3.4.4所有jar包mybatis-spring-1.3.1 和mybatis-3.4.4所有jar包
赠送jar包:mybatis-spring-boot-autoconfigure-2.1.1.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-2.1.1-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-2.1.1-sources.jar; 赠送...
spring + springmvc + mybatis 整合 demo 及 mybatis-pagehelper分页 demo
mybatis环境所需jar包,包括mybatis的jar包和MySQL的驱动包,初学mybatis必需的两个jar包
赠送jar包:mybatis-spring-boot-autoconfigure-2.1.1.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-2.1.1-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-2.1.1-sources.jar; 赠送...
mybatis-3.1.1_中文.pdf mybatis-3.1.1_中文.pdf mybatis-3.1.1_中文.pdf