Tools/Eclipse & STS

[SPRING] mybatis 동적 쿼리 foreach문 사용하기

썸머워즈 2020. 12. 27. 12:51
반응형

- mybatis foreach문 사용하기 -


mybatis 에서 동적쿼리인 foreach문을 사용하는 방법에 대해 알아보자.

코드를 보고 문법 및 사용 태그 옵션을 확인하도록하자.

 

▶예제1)

SELECT *
FROM cm_mine
WHERE 1 = 1
<if test="list != null and list.size != 0">
        AND id IN 
        <foreach item="item" collection="list" open="(" separator="," close=")">
            # <!-- list 단일 값(string,int 등)-->
            <!--list<VO> 일 경우 : #-->
        </foreach>
</if>

 

직접 사용하는 형식에 대해서는 이제 알았으니 자세하게 사용되는 태그 옵션들에 대해 알아보자.

 

▷options

collection : 전달받은 인자/변수 즉, list 같은 배열 형식의 변수
item : 배열에서의 값 하나하나를 의미한다.(script 나 java에서 foreach를 사용해봤으면 item,index를 알것이다.)
index : 현재 for문을 돌고있는 index를 의미한다.(0,1,2,3, ...)
open : foreach문이 시작될때 앞에 삽입될 문자열
separator : foreach문에서 반복되는 값 사이사이에 넣어줄 문자열
close : foreach문이 종료될때 앞에 삽입될 문자열

 

실제로 위 동적쿼리가 어떤식으로 실행되는지를 확인해보자면

List<String> list; //value : 'John', 'Ho', 'Mine'

이렇게 3개의 값을 가진 list변수가 존재하고 위 예제를 통해 다룬 쿼리문을 실행하게 되면

실제 쿼리문을 아래처럼 작성되어 실행된다.

SELECT *
FROM cm_mine
WHERE 1 = 1
    AND id IN ('John', 'Ho', 'Mine')

동적쿼리문은 실제로 많이 사용되기 때문에 까먹지말자.

반응형