MyBatis foreachインスタンス解析
1975 ワード
Foreachの基本構造は以下の通りです.
Item:反復を表すアイテム、#{item}は、コレクション内の対応する位置に渡された値を表します.
Index:コレクションが現在反復されている場所を示します
Open:反復開始前に追加した値
close:反復終了後に追加された値
collection:字面上の意味から1つの集合であることがわかり、それは必須であり、1つの集合を代表し、その取値は3つの場合がある.
1、list表示方法で渡されたパラメータはリストの集合である
2、array表現方法が伝えたパラメータは配列である
public List getUsersByIds(Long [] ids);
3、mapのキー(key)、このkeyがmapに対応する値は1つの集合である.
パラメータがmapの場合、マッピング文のcollectionの値idsはmapに対応するキーの値がセットまたは配列である必要があります.
我々の集合には1,3,5,7,9が含まれていると仮定する.では、上記の3つの場合の最終的な組み合わせの文は、
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
Item:反復を表すアイテム、#{item}は、コレクション内の対応する位置に渡された値を表します.
Index:コレクションが現在反復されている場所を示します
Open:反復開始前に追加した値
close:反復終了後に追加された値
collection:字面上の意味から1つの集合であることがわかり、それは必須であり、1つの集合を代表し、その取値は3つの場合がある.
1、list表示方法で渡されたパラメータはリストの集合である
public List<User> getUsersByIds(List<Long> ids);
<select id="getUsersByIds" resultType="User">
SELECT *
FROM user
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
2、array表現方法が伝えたパラメータは配列である
public List
<select id="getUsersByIds" resultType="User">
SELECT *
FROM user
WHERE ID in
<foreach item="item" index="index" collection="array"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
3、mapのキー(key)、このkeyがmapに対応する値は1つの集合である.
public List<User> getUsersByIds(Map<String,Object> map);
<select id="getUsersByIds" resultType="User">
SELECT *
FROM user
WHERE ID in
<foreach item="item" index="index" collection="ids"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
パラメータがmapの場合、マッピング文のcollectionの値idsはmapに対応するキーの値がセットまたは配列である必要があります.
我々の集合には1,3,5,7,9が含まれていると仮定する.では、上記の3つの場合の最終的な組み合わせの文は、
select * from user where ID in(1,3,5,7,9)