반응형
안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.
<foreach> 태그는 반복적인 작업을 수행할 때 사용되는 태그로
Java에서 제공하는 List나 map 또는 배열과 같은
컬렉션 데이터를 반복하여 SQL 쿼리를 생성할 때 활용됩니다.
1. <foreach> 태그의 구문 및 사용법
<!-- <foreach> 태그의 기본 구조 -->
<foreach collection="collectionName" item="itemName" index="indexName"
open="openString" close="closeString" separator="separatorString">
<!-- 반복 작업 수행 -->
</foreach>
<foreach> 태그의 주요 속성
속성명 | 속성 설명 |
collection | 반복할 대상이 되는 컬렉션의 이름을 지정합니다. 이는 MyBatis 매퍼 메서드에서 전달되는 파라미터 중 하나여야 합니다. |
item | 현재 반복되고 있는 컬렉션의 요소를 참조할 때 사용할 변수의 이름을 지정합니다. |
index |
현재 반복되고 있는 요소의 인덱스를 참조할 때 사용할 변수의 이름을 지정합니다. 필요에 따라 선택적으로 사용할 수 있습니다. |
open |
반복이 시작될 때 삽입될 문자열을 지정합니다. |
close | 반복이 끝날 때 삽입될 문자열을 지정합니다. |
separator | 각 요소 사이에 삽입될 문자열을 지정합니다. 제일 마지막 요소 뒤에는 삽입되지 않습니다. |
itemPrefix | 각 요소에 적용할 접두사를 지정합니다. |
itemSuffix | 각 요소에 적용할 접미사를 지정합니다. |
2. <foreach> 태그의 예제
<!-- 사용자 정보를 검색하는 쿼리 -->
<select id="selectUsersByIdList" parameterType="java.util.List" resultType="User">
SELECT * FROM users
WHERE id IN
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
</select>
위의 예제에서는 사용자의 'ID' 목록을 받아 해당 'ID'에 해당하는
사용자를 검색하는 쿼리를 보여줍니다.
<foreach> 태그는 'ID' 목록을 받아 아래와 같은 SQL의 'IN' 절을 생성합니다.
SELECT * FROM users
WHERE id IN ('codemen', 'yesorno', 'loveyou')
참고사항
collection 파라미터로 Map이나 배열객체와 더불어
List, Set등과 같은 반복가능한 객체를 전달할 수 있습니다.
반복가능하거나 배열을 사용할 때 index값은 현재 몇 번째 반복인지를 나타내고
value항목은 반복과정에서 가져오는 요소를 나타냅니다.
Map을 사용할 때 index는 key객체가 되고 항목은 value객체가 됩니다.
리스트 또는 배열의 경우 parameterType="Map"으로 설정하고,
parameterType이 리스트이면 collection="list",
배열이면 collection="array"로 설정합니다.
반응형
'IT 소스 > MyBatis' 카테고리의 다른 글
[MyBatis] <sql>, <include> - SQL 조각을 정의하여 재사용 (1) | 2024.02.16 |
---|---|
[MyBatis] <bind> - 변수를 설정 및 사용하기 (0) | 2024.02.15 |
[MyBatis] <set> - SET절에 동적으로 필드를 추가하거나 생략 (0) | 2024.02.07 |
[MyBatis] <trim> - 특정 조건에 따라 부분적으로 SQL 코드를 생략 (0) | 2024.02.05 |
[MyBatis] <where> - 'AND'나 'OR'와 같은 연산자를 자동으로 처리 (0) | 2024.02.04 |