S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

パラメータでリストを使う

iBATIS 2.3.0.677
ソートする場合にORDER BYを動的に変更したいんだけど。
と思って、ソートキーをリストで渡せないか、ゴニョゴニョ試してみた。

<select id="test" parameterClass="java.util.HashMap" resultMap="resultMap">
    SELECT
        id
        , name
    FROM 
        tbl_test
    <dynamic prepend="ORDER BY ">
        <iterate property="sortKeyList" conjunction=",">
            <isEqual property="sortKeyList[]" compareValue="id">id</isEqual>
            <isEqual property="sortKeyList[]" compareValue="name">name</isEqual>
        </iterate>
    </dynamic>
</select>

パラメータのMapに、sortKeyListというプロパティで、Listに文字列を"name","id"と入れておくと、

SELECT
    id, name
FROM 
    tbl_test
ORDER BY
    name, id

ってなSQLになってくれる。
ListにBeanを入れるんなら、property="sortKeyList[].hogehoge"みたいな感じでええんかな?