MyBatis foreach문 지원 태그
- collection : 전달받은 인자. Map이나 배열객체와 더불어 List, Set등과 같은 반복가능한 객체를 전달할 수 있다
- item : 전달받은 인자 값을 alias 명으로 대체
- index : 반복되는 구문 번호이다. 0부터 순차적으로 증가
- open : 구문이 시작될때 삽입할 문자열
- close : 구문이 종료될때 삽입할 문자열
- separator : 반복 되는 사이에 출력할 문자열
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
배열 param을 Map을 통해 넘겼을 경우
// DAO
public List<Members> getAuthUserList(String[] userArray) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("userArray",userArray);
return sqlSession.selectList("getAuthUserList", map);
}
// user_mapper.xml
<select id="getAuthUserList" resultType="members">
SELECT
m.*
,a.name
FROM members AS m
JOIN authority AS a
ON m.authority = a.authority
WHERE m.authority IN
<foreach collection="userArray" item="arr" open="(" close=")" separator=",">
#{arr}
</foreach>
ORDER BY m.authority;
</select>
배열 param을 직접 넘길 경우
// DAO
public List<Members> getAuthUserList(String[] userArray) {
return sqlSession.selectList("getAuthUserList", userArray);
}
// user_mapper.xml
<select id="getAuthUserList" resultType="members">
SELECT
m.*
,a.name
FROM members AS m
JOIN authority AS a
ON m.authority = a.authority
WHERE m.authority IN
-- 배열을 Mapds을 통해 넘길 때와는 다르게 collection의 값은 변수이름이 아닌 array를 입력해야한다
<foreach collection="array" item="arr" open="(" close=")" separator=",">
#{arr}
</foreach>
ORDER BY m.authority;
</select>
레퍼런스
https://java119.tistory.com/85