量産メモ帳

忘れっぽいのでメモを残しています。

iBatis の SQL 文の IN 句の引数に配列を渡す方法。

スポンサーリンク

ちょっとハマったので、メモを残しておきます。


最終的に以下のような SQL 文を発行したい場合、、、

SELECT column_a FROM table_b WHERE column_c IN ('1','2','3')



iBatisSQL マップはこんな感じで定義して、、、


<select id="selectA" parameterClass="java.util.Map" resultClass="java.util.ArrayList">
SELECT column_a FROM table_b
<iterate property="cList" prepend="WHERE column_c IN" open="(" close=")" conjunction="," >
#cList[]#
</iterate>
</select>



パラメータとして渡すマップはこんな感じでコーディングすれば良い。

List cList = new ArrayList();
cList.add("1");
cList.add("2");
cList.add("3");
Map parameterMap = new HashMap();
parameterMap.put("cList", cList);



"#"で囲まれた変数名に"[]"を付けるのがポイント。


記憶を頼りに書いているだけで動作確認していないけど、これで行けるはず。


参考資料: