728x90
반응형

<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>

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,