select 검색할때 파라미터를 리스트로 보내서 리스트에 있는 값을 하나하나씩 매핑시켜서 결과를 받을 때 유용한 쿼리죠. 

예를 들면 어떠한 리스트에 있는 값을 통해 쿼리문을 생성한다던지 하는 경우 iBatis에서는 iterate 태그로 for문과 같은 역할을 하여 동적 쿼리를 생성 할 수 있습니다.

<select id="getData" parameterclass="java.util.List" resultclass="int">
    SELECT  count(0)
    FROM    data_tb
    <iterate prepend="WHERE id IN" open="(" close=")" conjunction=",">
            #[]#
     </iterate>
</select>

위와 같이 parameterClass를 java의 List 형태로 전달해 주면 동적쿼리를 생성할수 있습니다. 만약 list에 1,2,3,4 의 데이터가 들어가 있으면 결과적으로 다음과 같은 쿼리가 실행되는 것과 같습니다.


<select id="getData" parameterclass="java.util.List" resultclass="int">
    SELECT  count(0)
    FROM    data_tb
    WHERE  id IN (1,2,3,4)
</select>

이렇게 iterate 를 사용하여 동적 쿼리문을 생성할 수 있습니다. 또한 parameterClass가 list형태가 아닌 Map이 List를 가지고 있는 형태도 iterate의 property 속성을 통해 접근할 수 있습니다.

만약 HashMap에 paramList라는 이름으로 list형이 들어가 있다고 가정하면

예)

 HashMap<String, Object> paramMap = new HashMap<String, Object>();

 List<Integer> paramList = new ArrayList<Integer>();

 paramMap.put("paramList", paramList);


<select id="getData" parameterclass="HashMap" resultclass="result">
    SELECT  *
    FROM    data_tb
    <iterate property="paramList" prepend="WHERE id IN" open="(" close=")" conjunction=",">
            #paramList[]#
    </iterate>
</select>

위와 같이 HashMap에 들어있는 list는 iterate의 property 속성을 통해 List를 가져 옵니다. ##사이는 HashMap에 put했던 list이름을 넣어주셔야 작동합니다.




http://www.dailyrazor.com/blog/best-java-web-frameworks/

2018년 java 웹 프레임워크 베스트 10 


https://github.com/devJang/developer-roadmap


참고하면 좋을듯!

+ Recent posts