<dynamic prepend="WHERE">
<isParameterPresent prepend="AND">
A.test_DT BETWEEN #START_DT# AND #END_DT#
</isParameterPresent>
<isNotEmpty prepend="AND" property="TEST_CD">
A.TEST_CD = #TEST_CD#
</isNotEmpty>
</dynamic>
1. dynamic 태크는 다른 동적 sql요소를 포장하고 결과적인 내용물을 위해 prepend, open, close를
수행하기 위해 제공되는 간단한 태그이다. 이 태그를 사용할 때 removeFirstPrepend속성이 강
제로 적용된다. 즉 맨 처음 나오는 prepend속성놈은 강제로 생략된다는 이야기다.
위의 예문에서 보다시피 isParameterPresent 태그안의 prepend를 안넣으면 그다음의 TEST_CD의 prepend속성이 사라져서 앞의 AND가 빠지게 되니깐 isParameterPresent안에 강제로 prepend를 넣은 것이다.
즉 dynamic 태그안에 removeFirstPrepend = true가 적용은 되지만 생략된 채로 있다고 보면 된다. (3번과 같이 볼 것)
2. isParameterPresent는 안의 인자가 not null이 아닐 경우 즉 빈값이 아닐 경우 안의 내용이 쿼리로
만들어지는것으로 반대로 isNotParameterPresent가 있다. 위의 예문참조하자.
3. removeFirstPrepend 이 놈은 태그를 생성하는 첫번째 내포내용의 prepend를 제거하는 놈으로
true속성을 주면 자기 자신의 prepend가 사라지는 게 아니고 안에 포함된 놈의 첫번째 prepend속
성을 제거한다는 것에 유의를 하자.
<isNotNull prepend="AND" removeFirstPrepend="true" open="(" close=")" >
<isNotEmpty prepend="OR" property="A1"> <-- 이 prepend속성을 제거하는것이다.
A1 = #A1#
</isNotEmpty>
<isNotEmpty prepend="OR" property="A2"> <-- 위 인자가 비었으면 이 놈이 제거되겠지.
A2= #A2#
</isNotEmpty>
</isNotNull>
'SQL > IBATIS' 카테고리의 다른 글
동적쿼리 예제 isGreater, isNull,isEmpty 등 (0) | 2014.04.12 |
---|---|
ibatis 글자수로 조건 줄때 (0) | 2014.04.12 |
동적 SQL (0) | 2014.03.25 |
ibatis 동적 쿼리 예제 (0) | 2014.03.25 |
조회수 증가 쿼리(ibatis) (0) | 2014.02.19 |
[iBatis] iBatis 에서 Dynamic Mapped Statement 사용시 문제 (0) | 2014.02.19 |
SqlMapClient API를 통해 statement를 수행하기. (0) | 2014.02.19 |
배치(Batches) (0) | 2014.02.19 |