mybatisで配列を渡して反復処理する方法
MyBatis に配列を渡して反復処理するには foreach 要素を使います。具体的な手順は次のとおりです。
- XML SQL ステートメント(例:)を定義する
<select id="selectUserList" parameterType="java.util.List" resultType="User">
SELECT * FROM users WHERE id IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
この例では、parameterTypeは渡すパラメータの型をjava.util.Listと指定し、collection属性は走査対象とするコレクションオブジェクトを指定し、item属性は走査処理中の一時的な変数名を指定します。
- ネイティブに日本語で言い換えると
List<Integer> idList = Arrays.asList(1, 2, 3);
List<User> userList = sqlSession.selectList("selectUserList", idList);
この例では、idList はクエリを実行するユーザー ID が含まれる配列です。
SQL文を実行する際、MyBatisは渡された配列を自動的に反復処理し、配列内の各要素をSQL文のforeach要素内の仮変数に渡します。