Mybatis 中如何实现对多数据库的兼容?
<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是你自己的标识名 -->
Connection conn = dataSource.getConnection(); DatabaseMetaData metaData = conn.getMetaData(); return metaData.getDatabaseProductName();
<?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方言。