java - MyBatis - 为 Oracle 编写映射器,同时针对 H2 进行测试

标签 java oracle unit-testing h2 mybatis

我目前正在编写 MyBatis 映射器,用于生成应在 QA 和生产中针对 Oracle DB 运行的查询。

但是,为了在这些映射器上运行正确的单元测试,我使用具有相同架构和一些模拟数据的 H2 数据库。除了标准 SQL、H2 SQL 和 Oracle SQL 之间存在差异的情况外,这在大多数情况下都可以正常工作。

一个例子是多行插入,它对于 Oracle 有不同的语法。

由于我不想为 H2 和 Oracle 编写单独的映射器(这会失去对这些映射器进行单元测试的全部意义),并且希望尽可能避免数据库往返。,您有什么建议我应该做什么?

最佳答案

如果您不介意编写两个单独的sql语句,配置databaseIdProvider可能会帮助您,然后在映射器xml中您将执行如下操作:

<?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="CityMapper">

    <select id="findById" resultType="City" databaseId="oracle">

    </select>

    <select id="findById" resultType="City" databaseId="h2">

    </select>

</mapper>

关于java - MyBatis - 为 Oracle 编写映射器,同时针对 H2 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36493534/

相关文章:

java - 模拟对象上的 Mockito NullPointerException

oracle - 无法在 OracleBI Discoverer 中扩展工作簿

mysql - 如何在hibernate中使用group by获取查询结果的总数?

Python 库 'unittest' : Generate multiple tests programmatically

java - 列表首选项默认值不起作用 Android studio

java - 是否可以从通讯录中过滤掉 facebook、whatsapp 联系人?

java - 未定义的方法类型

java - 什么是 NullPointerException,我该如何解决?

sql - 如何选择最常出现的值?

c# - 使用 AutoPoco 生成依赖于另一个值的值