我目前正在编写 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/