mybatisにおけるin句の使い方
MyBatisでは、INクエリは複数の値を1回のクエリで一致させるために使用される一般的なクエリ方法です。
IN句は一般的にWHERE句の中で使用され、指定したリストの値に一致するレコードを抽出するために使用されます。
たとえば、userというデータベースのテーブルを考えてみてください。
user_id | user_name
--------|----------
1 | Alice
2 | Bob
3 | Charlie
4 | David
ユーザーIDが1または3のユーザーを照会したい場合は、INクエリを使用できます。
SELECT * FROM user WHERE user_id IN (1, 3);
MyBatisでは動的SQLを利用して、IN句を作成できます。たとえば、タグを使用してカンマ区切りの値リストを生成し、それを問合せステートメントに埋め込むことができます。
SELECT * FROM user WHERE user_id IN
<foreach item="item" collection="ids" open="(" close=")" separator=",">
#{item}
</foreach>
Java のコードで、値のリストを MyBatis のクエリメソッドに渡すことで IN 照会を実行できます。
List<Integer> ids = Arrays.asList(1, 3);
List<User> users = sqlSession.selectList("getUserByIds", ids);
上記の例のgetUserByIdsはMybatisのマッピングファイルに記載される問い合わせ文であり、idsはパラメータ経由で問い合わせに与えられる値のリストです。
MyBatis の IN クエリは動的 SQL と タグを利用して構築・実行され、複数の値を1 つのクエリで効率的に照合できます。