ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iBatis/myBatis] Dynamic 동적 SQL
    Study 2021. 2. 8. 13:41

     

     

    회사에서 작은 검색기능을 추가하며 xml 매퍼의 쿼리문을 추가할 일이 생겼다.

    iBatis / myBatis는 SQL 매퍼 프레임워크로, DB와 프로그램을 이어주는 역할을 한다. xml 매퍼 파일에 쿼리를 직접 작성해서 CRUD를 프로그램이 수행하게 한다.

     

    그런데 쿼리의 경우, 쿼리문이 정해져 있어 다른 조건 값으로 CRUD를 수행할 경우 매번 쿼리문을 다시 xml 파일에 추가해야 한다. 그래서 사용하는 것이 동적 쿼리로 iBatis에서는 <dynamic> 태그를 사용해 동적 쿼리를 구성할 수 있다.

     

     

     


    <dynamic> 태그가 제공하는 대표적인 태그

     

    <isNull> : 명시된 속성 값이null일 경우 수행
    <isNotNull> : 명시된 속성 값이 null이 아닐 경우 수행
    <isEmpty> : 속성 값이 없을 경우 수행
    <isNotEmpty> : 속성 값에 값이 있을 경우 수행
    <isEqual> : 속성 값이 compareValue 값과 같으면 실행
    <isNotEqual> : 속성 값이 compareValue 값과 다르면 실행

     

    * prepend : <prpend="AND"> 처럼 쓸 수 있다. 

     

     

     


    iBatis <dynamic>의 사용 예시

    <dynamic>
      <isNotEmpty prepend="AND" property="NAME"> 
      NAME LIKE CONCAT('%', #name#, '%')
      </isNotEmpty>
      <isEqual prepend="AND" property="A" compareValue="Y"> 
      YESORNO = 'Y'
      </isEqual>
      <isEqual prepend="AND" property="A" compareValue="N"> 
      YESORNO = 'N'
      </isEqual>
    </dynamic>

     

    해당 예시는 WHERE 절의 조건을 동적 쿼리로 구성한 것이다. 조건에 맞게 되면 각 태그 사이의 WHERE 조건 절을 iBatis가 읽어들인다.

     

     

     

    댓글

Designed by Tistory.