MybatisでListを使用してinクエリを使う方法は何ですか?
MyBatisでListを使用してin句を渡す場合、動的SQLのforeachタグを使うことで実現できます。以下は簡単な例です:
UserクラスとUserMapperインターフェースがあると仮定し、ユーザーIDリストに基づいてユーザー情報を取得する必要があります。
public interface UserMapper {
List<User> selectUsersByIdList(@Param("idList") List<Integer> idList);
}
UserMapper.xmlファイル内では、foreachタグを使用して実現できます。
<select id="selectUsersByIdList" resultType="User">
SELECT * FROM user WHERE id IN
<foreach collection="idList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
この例では、idListは渡されたListです。foreachタグはidListの各要素をループし、それをSQLステートメントのIN条件に結合します。
使用例:
List<Integer> idList = Arrays.asList(1, 2, 3);
List<User> users = userMapper.selectUsersByIdList(idList);
Listをinで渡して、対応するユーザー情報を検索できます。