본문 바로가기

Java dev/iBatis

ibatis 동적 쿼리 <dynamic>


ibatis 동적 쿼리

동적으로 where (Name = '정수연' or Id = 'gong') and Tel = 'tel' 쿼리를 만들기 위한 iBatis Sqlmap 구문을 간단히 소개합니다.

<select id="member_search" parameterClass="Map">
  SELECT *
  FROM member
  <dynamic prepend="WHERE">
   <isNotNull prepend="AND" removeFirstPrepend="true" open="(" close=")" >
      <isNotEmpty prepend="OR" property="name">
         Name = #name#
      </isNotEmpty>
      <isNotEmpty prepend="OR" property="id">
         Id = #id#
      </isNotEmpty>
     </isNotNull>
   <isNotEmpty prepend="AND" property="tel">
    Tel = #tel#
   </isNotEmpty>
  </dynamic>
 </select>


removeFirstPrepend="true" -> 이태그 밑의 처음 들어오는 조건은 prepend 를 붙이지 않겠으며, isNotNull 테그 안에  하나라도 조건이 있으면 처음과 끝에 '(', ')' 를 붙이겠다는 뜻이다.

그리하여  

where (Name = '정수연' or Id = 'gong') and Tel = 'tel'

를 만든다.