관리 메뉴

투덜이 개발자

MyBatis에서 사용하는 <foreach> 사용법 본문

Program Language/Java

MyBatis에서 사용하는 <foreach> 사용법

엠투 2022. 11. 11. 10:49
반응형

MyBatis에서 사용하는 <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}||'%'

 

https://kimvampa.tistory.com/180

 

[MyBatis] <foreach> 사용법

목표 MyBatis에서 사용하는 사용법 를 왜 사용하고 어떻게 사용하는지를 알아봅니다. 순서 1. 이해 2. 예제 1. 전달받은 collection 인자 값을 바탕으로 반복적인 SQL 구문을 작성할 때 사용합니다. 주로

kimvampa.tistory.com

 

 

<foreach item="item" index="index" collection="ides.split(',')" open="(" separator="," close=")">
'${item}'
</foreach>

 

https://it-developer.tistory.com/4409

 

mybatis in 절에 foreach 사용하기

'${item}'

it-developer.tistory.com

 

반응형