<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 되있게
'Programming > ibatis + mybatis' 카테고리의 다른 글
테이블 컬럼 카멜 표기법 변환기(mybatis) (1) | 2018.08.07 |
---|---|
Spring + mybatis 환경에서 xml 파일 변경시 서버 재시작 없이 반영 방법 (0) | 2015.06.01 |
iBATIS 2.3.0 또는 2.3.2 이상 sqlmap 자동 리로딩 (0) | 2015.06.01 |
ibatis란? (0) | 2014.03.19 |