首页 > 试题广场 >

Mybatis 中如何实现对多数据库的兼容?

[问答题]

Mybatis 中如何实现对多数据库的兼容?

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方言。
发表于 2017-01-24 14:49:26 回复(0)
(1)写一个配置文件,类型里标注出数据库类型;在程序里通过取该字符串判断一下,来选择加载不同的mybatis配置文件;每个配置文件的mapper中,通过不同的映射文件,达到多方言支持的效果
(2)配置mybatis.xml文件,然后在sql映射文件里写sql,在后面加上数据库标记,这样程序会自动识别数据库,根据你配置的value和databaseId来寻找合适的sql方言
发表于 2017-08-23 16:47:05 回复(0)
发表于 2019-12-24 14:05:39 回复(0)
导入相应的数据库驱动包。
写对应数据库的sql语句。
发表于 2018-11-14 09:27:55 回复(0)
 
发表于 2017-08-26 16:13:41 回复(0)

  1. <databaseIdProvider type="DB_VENDOR">  
  2.   <property name="SQL value="sqlserver"/>  
  3.   <property name="DB2" value="db2"/>          
  4.   <property name="Oracle" value="oracle" />    
  5.   <property name="Adaptive Server Enterprise" value="sybase"/>     
  6.   <property name="MySQL" value="mysql" />  
  7. </databaseIdProvider><!-- name是数据库厂商名,value是你自己的标识名 -->  
发表于 2017-08-21 14:46:31 回复(0)