マイバティスを使用して、foreachでデータを渡す方法は何ですか。

MyBatisのforeachタグを使用すると、コレクションや配列形式のパラメータを渡すことができます。以下はforeachタグを使用してデータを渡す手順です:

  1. SQL文でforeachタグを使用する場合、ループする必要があるパラメータを#{}で囲みます。例えば:
<select id="selectUsers" resultType="User">
  SELECT * FROM users WHERE id IN
  <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
    #{item}
  </foreach>
</select>
  1. Mapperインターフェース内でメソッドを宣言し、そのメソッドのパラメータ型はコレクションや配列型のパラメータと一致している必要があります。例えば:
public interface UserMapper {
  List<User> selectUsers(List<Integer> ids);
}
  1. Mapper.xmlファイルには、このメソッドのSQLステートメントとパラメータのマッピングが設定されています。例えば:
<mapper namespace="com.example.mapper.UserMapper">
  <select id="selectUsers" resultType="User">
    SELECT * FROM users WHERE id IN
    <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
      #{item}
    </foreach>
  </select>
</mapper>
  1. コード内でそのメソッドを呼び出し、コレクションや配列タイプのパラメータを渡す。例えば:
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<Integer> ids = Arrays.asList(1, 2, 3);
List<User> userList = userMapper.selectUsers(ids);

上記の例では、idsは1、2、3を含むList型のパラメータです。foreachタグは、このコレクション内の各要素を指定された方法で連結し、最終的にSQLステートメントのIN条件を生成します。

bannerAds