2016-04-08 10 views
1

現在QAとProductionのOracle DBに対して実行するクエリを生成するMyBatisマッパーを作成しています。MyBatis - H2に対するテスト中にOracle用のマッパーを作成

しかし、これらのマッパーで適切な単体テストを実行するために、同じスキーマと一部の模擬データを持つH2データベースを使用しています。これは、標準のSQL、H2 SQLとOracle SQLの間に矛盾がある場合を除いて、ほとんどの場合うまく機能します。

Oracleの構文が異なる複数行の挿入がその例です。

H2とOracleのために別々のマッパー(これらのマッパーのユニットテストの全ポイントを失うことになる)を書きたくないので、できるだけDBラウンドトリップを避けたいと思っています。私は。。。をするべきです ?

答えて

1

次の2つの別々の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に対して実行されるまで、テストされていないことです。 –

関連する問題