mybatis的多数据库支持
2013-11-05 14:01
567 查看
多数据库要求在不同底层上随意切换
一:纯mybatis,就是只使用mybatis这一个框架
a)取巧的办法
写一个配置文件,类型里标注出数据库类型来,如下:
这样在程序里通过取该字符串判断一下,来选择加载不同的mybatis配置文件,如下
这样,在每个配置文件的mapper中,通过不同的映射文件,达到多方言支持的效果,如下
这样,每次启动时,通过修改外部配置文件中的dbtype,即可获取到恰当的数据库方言映射文件
缺点是比较繁琐,功能扩展以及修改时,往往要同步好几个文件。
b)使用框架的特性
mybatis3.1.1起,本身可以支持多数据库。
首先你要在mybatis.xml文件中添加如下配置
这个name如果不知道该填什么,可以用如下代码获取
然后,在sql映射文件里。要如下写sql,在后面加上数据库标记
这样程序会自动识别数据库,根据你配置的value和databaseId来寻找合适的sql方言。
只能支持3.1.1及其以上版本
一:纯mybatis,就是只使用mybatis这一个框架
a)取巧的办法
写一个配置文件,类型里标注出数据库类型来,如下:
dbtype = oracle/mysql/sqlserver . . .
这样在程序里通过取该字符串判断一下,来选择加载不同的mybatis配置文件,如下
String resource = "mybatis.xml"; if (Util.xmlInfo.getDbType().contains("mysql")) { resource = "mybatis_mysql.xml"; }eles if(Util.xmlInfo.getDbType().contains("sqlserver")) { resource = "mybatis_sqlserver.xml";}
这样,在每个配置文件的mapper中,通过不同的映射文件,达到多方言支持的效果,如下
mybatis_oracle.xml ... <mappers> <mapper resource="com/xiaoxian/SqlMapper_user_orale.xml"/> <mapper resource="com/xiaoxian/SqlMapper_teacher_oracle.xml"/> </mappers> ... mybatis_mysql.xml ... <mappers> <mapper resource="com/xiaoxian/SqlMapper_user_mysql.xml"/> <mapper resource="com/xiaoxian/SqlMapper_teacher_mysql.xml"/> </mappers> ... mybatis_sqlserver ... <mappers> <mapper resource="com/xiaoxian/SqlMapper_user_sqlserver.xml"/> <mapper resource="com/xiaoxian/SqlMapper_teacher_sqlserver.xml"/> </mappers> ...
这样,每次启动时,通过修改外部配置文件中的dbtype,即可获取到恰当的数据库方言映射文件
缺点是比较繁琐,功能扩展以及修改时,往往要同步好几个文件。
b)使用框架的特性
mybatis3.1.1起,本身可以支持多数据库。
首先你要在mybatis.xml文件中添加如下配置
<databaseIdProvider type="DB_VENDOR"> <property name="SQL value="sqlserver"/> <property name="DB2" value="db2"/> <property name="Oracle" value="oracle" /> <property name="Adaptive Server Enterprise" value="sybase"/> <property name="MySQL" value="mysql" /> </databaseIdProvider><!-- name是数据库厂商名,value是你自己的标识名 -->
这个name如果不知道该填什么,可以用如下代码获取
Connection conn = dataSource.getConnection(); DatabaseMetaData metaData = conn.getMetaData(); return metaData.getDatabaseProductName();
然后,在sql映射文件里。要如下写sql,在后面加上数据库标记
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.boco.iwms.base.dao.BasicSqlDao"> <select id="getCountOfSql" resultType="int" useCache="false" statementType="STATEMENT" timeout="5000" databaseId="mysql"> <![CDATA[ SELECT COUNT(*) FROM user ]]> </select> <select id="getCountOfSql" resultType="int" useCache="false" statementType="STATEMENT" timeout="5000" databaseId="oracle"> <![CDATA[ SELECT COUNT(*) FROM user ]]> </select> </mapper>
这样程序会自动识别数据库,根据你配置的value和databaseId来寻找合适的sql方言。
只能支持3.1.1及其以上版本
相关文章推荐
- mybatis数据库字段带下划线,映射支持java类属性驼峰命名
- mybatis支持多数据库切换(转)
- mybatis下的分页,支持所有的数据库
- Mybatis同时支持多种数据库(oracle 和MySQL)
- mybatis-databaseIdProvider多数据库支持
- mybatis 中哪些数据库支持 useGeneratedKeys="true"
- Mybatis支持连接多数据库
- MyBatis之databaseIdProvider多数据库支持
- Mybatis 3.1.1支持多数据库
- mybatis-databaseIdProvider多数据库支持
- 如何在spring中配置使得mybatis3.1.1中支持vendor方式的multi-db(多数据库)
- mybatis 中哪些数据库支持 useGeneratedKeys="true"
- SpringMVC+Mybatis一套代码支持多个版本数据库
- mybatis下的分页,支持所有的数据库
- mybatis下的分页,支持所有的数据库
- mybatis数据库字段带下划线,映射支持java类属性驼峰命名
- mybatis的selectKey用来给不支持自动生成主键的数据库用,什么意思?
- 如何在spring中配置使得mybatis3.1.1中支持vendor方式的multi-db(多数据库)
- 让mybatis支持管理和操作多个不同的业务数据库实例
- mybatis下的分页,支持所有的数据库