mybatis-databaseIdProvider多数据库支持

<select
id="selectPerson"
parameterType="int"
parameterMap="deprecated"
resultType="hashmap"
resultMap="personResultMap"
flushCache="false"
useCache="true"
timeout="10000"
fetchSize="256"
statementType="PREPARED"
resultSetType="FORWARD_ONLY"
databaseId="mysql">

  下面的解释中有一个databaseId属性: 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。新增,修改和删除都有这个属性

一、在configuration.xml配置

<databaseIdProvider type="DB_VENDOR">
  <property name="MySQL" value="mysql" />
<property name="Oracle" value="oracle" />
</databaseIdProvider>

二、新建Mapper

public interface DatabaseIdProviderMapper {
String selectTime();
}

三、新建 DatabaseIdProvider.xml

<mapper namespace="com.yihaomen.mybatis.dao.DatabaseIdProviderMapper">
<select id="selectTime" resultType="String" databaseId="mysql">
SELECT NOW() FROM dual
</select>
<select id="selectTime" resultType="String" databaseId="oracle">
SELECT 'oralce'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual
</select>
</mapper>

四、在configuration.xml中添加映射器

<mappers>
<mapper resource="com/yihaomen/mybatis/model/DatabaseIdProvider.xml"/>
</mappers>

五、jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis-learn?characterEncoding=utf8
jdbc.username=root
jdbc.password=tiger #jdbc.driver=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@localhost:1521:mybatis
#jdbc.username=mybatis
#jdbc.password=mybatis maxActive= 50

六、测试

import com.yihaomen.mybatis.dao.DatabaseIdProviderMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import user.BaseTest; public class DatabaseIdProviderTest extends BaseTest{ public static void main(String[] args) {
SqlSessionFactory factory = getSession();
SqlSession session = factory.openSession();
DatabaseIdProviderMapper mapper = session.getMapper(DatabaseIdProviderMapper.class);
System.out.println(mapper.selectTime());
}
}
  • 结果说明 
    如果当前启用的是oracle则执行databaseId=”oracle”的语句,如果mysql值执行databaseId=”mysql”的语句

https://gitee.com/huayicompany/springmvc-mybatis

参考文献:

[1] 杨开振 著,《深入浅出MyBatis技术原理与实战》, 电子工业出版社,2016.09

[2]火柴盒zhang博客,http://blog.csdn.net/likewindy/article/details/51396576

上一篇:VBA学习笔记(6)--抽取第一列中叫“虹虹”的个人信息


下一篇:解决Jenkins用shell脚本部署后,Jenkins自动杀掉启衍生出来的守护进程