IBatis Dynamic Query

From JCFWiKi

Jump to: navigation, search

그림:check.gif

  • 산출물 : iBatis Dynamic Query
  • 작성자: 송희정
  • 최초작성일 : 2008/05/19
  • 최종작성일 : 2008/05/20

Copyright © 2008 Daewoo Information Systems Co., Ltd.

그림:forbidden.gif

iBatis에서 동적 쿼리를 작성하기 위한 prepend에 대한 내용입니다.

그림:information.gif

목차

[편집] 바이너리 조건 요소

바이너리 조건 요소는 정적값 또는 다른 프로퍼티값을 위한 프로퍼티값과 비교한다. 만약 결과가 true라면 몸체부분의 SQL쿼리가 포함된다.

[편집] 바이너리 조건 속성

prepend Statement에 붙을 오버라이딩 가능한 SQL부분(옵션)

  • 요소
    • property : 비교되는 property(필수)
    • compareProperty : 비교되는 다른 property (필수 또는 compareValue)
    • compareValue : 비교되는 값(필수 또는 compareProperty)
  • 가능 조건
    • <isEqual> : 프로퍼티가 값 또는 다른 프로퍼티가 같은지 체크
    • <isNotEqual> : 프로퍼티가 값 또는 다른 프로퍼티가 같지 않은지 체크
    • <isGreaterThan> : 프로퍼티가 값 또는 다른 프로퍼티 보다 큰지 체크
    • <isGreaterEqual> : 프로퍼티가 값 또는 다른 프로퍼티 보다 크거나 같은지 체크
    • <isLessThan> : 프로퍼티가 값 또는 다른 프로퍼티 보다 작은지 체크
    • <isLessEqual> : 프로퍼티가 값 또는 다른 프로퍼티 보다 작거나 같은지 체크
 
사용법 예제)
<isLessEqual prepend="AND" property="age" compareValue="18">
  ADOLESCENT = 'TRUE'
</isLessEqual>

[편집] 단일 조건 요소

단일 조건 요소는 특수한 조건을 위해 프로퍼티의 상태를 체크한다.

  • 요소
    • prepend : statement에 붙을 오버라이딩 가능한 SQL부분(옵션)
    • property : 체크하기 위한 프로퍼티(필수)
  • 가능 조건
    • <isPropertyAvailable> : 프로퍼티가 유효한지 체크
    • <isNotPropertyAvailable> : 프로퍼티가 유효하지 않은지 체크
    • <isNull> : 프로퍼티가 null인지 체크
    • <isNotNull> : 프로퍼티가 null이 아닌지 체크
    • <isEmpty> : Collection, 문자열 또는 String.valueOf() 프로퍼티가 null이거나 empty(“” or size() < 1)인지 체크
    • <isNotEmpty> : Collection, 문자열 또는 String.valueOf() 프로퍼티가 null 이아니거나 empty(“” or size() < 1)가 아닌지 체크
 
사용법 예제)
<isNotEmpty prepend="AND" property="firstName">
  FIRST_NAME = #firstName#
</isNotEmpty>

[편집] 다른 요소들

  • 요소
    • Parameter Present : 파라미터 객체가 존재하는지 체크
    • Parameter Present Attributes : prepend - the statement에 붙을 오버라이딩 가능한 SQL부분
  • 가능 조건
    • <isParameterPresent> : 파라미터 객체가 존재(not null)하는지 체크
    • <isNotParameterPresent> : 파라미터 객체가 존재하지(null) 않는지 체크
사용법 예제)
<isNotParameterPresent prepend="AND">
EMPLOYEE_TYPE = 'DEFAULT'
</isNotParameterPresent>
  • Iterate : 이 태그는 Collection을 반복하거나 리스트내 각각을 위해 몸체 부분을 반복한다.
    • prepend : the statement에 붙을 오버라이딩 가능한 SQL부분 (옵션)
    • property : 반복되기 위한 java.util.List타입의 프로퍼티 (필수)
    • open : 반복의 전체를 열기 위한 문자열, 괄호를 위해 유용하다. (옵션)
    • close : 반복의 전체를 닫기 위한 문자열, 괄호를 위해 유용하다. (옵션)
    • conjunction : 각각의 반복 사이에 적용되기 위한 문자열, AND 그리고 OR을 위해 유용하다. (옵션)
  • 가능 조건
    • <iterate> : java.util.List 타입의 프로퍼티 반복
사용법 예제)
<iterate prepend="AND" property="userNameList" open="(" close=")" conjunction="OR">
username = #userNameList[]#
</iterate>

그림:warning.gif

  • iterator요소를 사용할 때 리스트 프로퍼티의 끝에 중괄호[]를 포함하는 것은 중요하다. 중괄호는 문자열처럼 리스트를 간단하게 출력함으로부터 파서를 유지하기 위해 리스트처럼 객체를 구별한다.