ibatis 문법(iterator, iterate)
<select id="select.dynamic.query" resultMap="map"
parameterClass="map" >
SELECT * FROM EMP
<dynamic prepend="WHERE">
<iterate property="empno"
conjunction="," open="EMPNO IN (" close=")" >
#empno[]# --여러개의 값이 들어가므로 []를 빼먹으면 안된다.
</iterate>
</dynamic>
</select>
resultMap과 parameterClass 값은 무시하도록 한다.
결과 SQL > empno에 값이 (`123`,`234`,`345`....)이 있다는 가정하에
SELECT * FROM EMP
WHERE EMPNO IN (`123`,`234`,`345`,.....)
설명 > <iterate>는 propend의 값만큼 반복수행한다고 생각하면 된다.
SQL를 반복 수행할때 open의 값을 넣어주고 반복되는 SQL를 실행한다음에 CLOSE의 값을 넣어주어서 하나의 SQL를 만든다.
그리고 conjunction의 값은 반복되는 값들의 구분자를 지정해 주는 옵션인다.
예> no = ['월','화','수','목','금','토','일']
옵션값 : property="no" open="[시작 " close=" 끝]" conjunction="/"
결과값 : [시작 월/화/수/목/금/토/일 끝]
[출처] ibatis 문법( iterator, iterate)|작성자 Kyrandes
분류(checkbox) 로 검색해서 자료를 검색하려고 사용했다..
<isNotEmpty property="srchCategorySeqs">
<iterate prepend="AND CM.CS_CATEGORY_SEQ IN" open="(" close=")" conjunction="," property="srchCategorySeqs">
#srchCategorySeqs[]#
</iterate>
</isNotEmpty>
<c:forEach var="row" items="${listCategory}" varStatus="i">
<label for="searchCheck${i.count }" class="searchCk"><input type="checkbox" id="searchCheck${i.count }" name="srchCategorySeqs" value="<c:out value="${row.category.categorySeq}"/>"
<c:forEach var="rowSub" items="${condition.srchCategorySeqs}" varStatus="j">
<c:if test="${condition.srchCategorySeqs[j.count-1] eq row.category.categorySeq}">
checked
</c:if>
</c:forEach>
><c:out value="${row.category.title}"/>
</label>
</c:forEach>
선택된 분류가 check 되있게