私はmybatisで以下のようなSQLを作成しようとしています。
SELECT COL_C
FROM TBLE_1
WHERE (COL_A, COL_B) in ( ('kp','kar'),('srt','sach'));
私の入力パラメーターの型は HashMap です。マッパーxmlファイルからSQLを生成するにはどうすればよいですか。以下のコードは、マップが null に評価されたことを示す例外をスローします。
<select id="selectCOLC" parameterType="java.util.HashMap" resultType="String">
SELECT COL_C
FROM TBLE_1
WHERE (COL_A, COL_B) in
<foreach item="item" collection="#{map.keySet()}" open="((" separator="),(" close="))">
#{item},#{item.get(item)}
</foreach>
</select>
他のアプローチの 1 つは、キー値フィールドを持つクラスを作成し、オブジェクトのリストを作成してから、次のようにparameterType
asを渡すことです。list
<select id="selectCOLC" parameterType="list" resultType="String">
SELECT COL_C
FROM TBLE_1
WHERE (COL_A, COL_B) in
<foreach item="item" collection="list" open="((" separator="),(" close="))">
#{item.getKey()},#{item.getVal()}
</foreach>
</select>
しかし、最初のアプローチでマッパーが機能する方法はありますか? クエリをユニオンに変更する以外