공부/데이터베이스
[MyBatis] <foreach> 사용법
Kim VamPa
2021. 3. 8. 10:51
728x90
반응형
목표
MyBatis에서 사용하는 <foreach> 사용법
<foreach>를 왜 사용하고 어떻게 사용하는지를 알아봅니다.
순서
1. <foreach> 이해
2. 예제
1. <foreach>
전달받은 collection 인자 값을 바탕으로 반복적인 SQL 구문을 작성할 때 사용합니다. 주로 데이터 타입이 동일한 다수의 배열 데이터를 검색조건에 반영해야 할 때, OR 또는 IN 구문에서 많이 사용합니다.
<foreach>의 속성 다음 6가지가 있습니다.
1) collection 속성 - 전달받은 인자를 속성값으로 삽입합니다. Map, Array, List, Set 등과 같은 반복 가능한 객체를 전달할 수 있습니다.
2) item 속성 - collection속성에서 전달받은 collection 인자값을 대체할 '이름'을 속성 값으로 삽입합니다.
3) open 속성 - 구문이 시작될때 삽입할 문자열을 속성 값으로 삽입합니다.
4) close 속성 - 구문이 종료될때 삽입할 문자열을 속성 값으로 삽입합니다.
5) separator 속성 - 반복되는 구문 사이에 삽입할 문자열을 속성값으로 삽입합니다.
6) index 속성 - index값을 부를 일종의 변수명을 속성값으로 삽입합니다. 태그 내에 #{index}를 통해 호출할 때 0부터 반환됩니다.
2. 예제
전달받은 배열
Java 코드
int[] bnoArr = {1,2,3,4,5};
public List<BoardVO> getList(int[] bnoArr) throws Exception;
=> getList(bnoArr);
<select id="getList" resulttype="BoardVO">
select bno, title, content, writer from tbl_board where bno IN
<foreach item="bno" collection="bnoArr" open="(" close=")" separator=",">
#{bno}
</foreach>
</select>
결과 쿼리
select bno, title, content, writer from tbl_board where bno IN (1,2,3,4,5)
String typeArr = {T,C}
public List<BoardVO> getList(String[] arr, String keyword) thorws Exception;
=> getList(typeArr,keyword);
<select id="getList" resulttype="BoardVO">
select bno, title, content, writer from tbl_board where
<trim prefixOverrides="OR">
<foreach item="type" collection="typeArr">
<trim prefix="OR">
<choose>
<when test="type == 'T'.toString()">
title like '%'||#{keyword}||'%'
</when>
<when test="type == 'C'.toString()">
content like '%'||#{keyword}||'%'
</when>
<when test="type == 'W'.toString()">
writer like '%'||#{keyword}||'%'
</when>
</choose>
</trim>
</foreach>
</trim>
</select>
결과 쿼리
select bno, title, content, writer from tbl_board where
title like '%'||#{keyword}||'%' OR content like '%'||#{keyword}||'%'
REFERENCE
DATE
- 2020.03.08
728x90
반응형