2016-04-08 1 views
1

В настоящее время я пишу Mavers MyBatis, которые генерируют запросы, которые должны выполняться против Oracle DB в QA и Production.MyBatis - записывающие mappers для Oracle во время тестирования против H2

Однако для выполнения правильных модульных тестов на этих картографах я использую базу данных H2 с той же схемой и некоторыми издевательскими данными. Это работает отлично по большей части, за исключением случаев, когда существуют расхождения между стандартными SQL, H2 SQL и Oracle SQL.

Одним из примеров может быть многострочные вставки, которые имеют другой синтаксис для Oracle.

Поскольку я не хочу писать отдельные картографы (которые потеряли бы всю цель модульного тестирования этих карт) для H2 и Oracle и хотели бы избежать как можно большего числа обращений к DB., Что бы вы предложили Я должен делать ?

ответ

1

Если вы не возражаете писать два отдельных 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> 
+0

Этот подход может быть путь Я сделаю это. Единственная проблема заключается в том, что запрос Oracle остается непроверенным до тех пор, пока он не будет запущен в Oracle. –