Programming/DB

[DB] iBatis 동적 쿼리

성일만 2015. 5. 13. 15:39

iBatis 동적쿼리



이항연산

 <isEqual>

 property가 compareProperty or compareValue와 같은지 검사

 <isNotEqual>

 property가 compareProperty or compareValue와 같지 않은지 검사

 <isGreaterThan>

 property가 compareProperty 값 또는 compareValue의 값보다 큰지 검사

 <isGreaterEqual>

 property가 compareProperty 값 또는 compareValue의 값보다 크거나 같은지 검사

 <isLessThan>

 property가 compareProperty 값 또는 compareValue의 값보다 작은지 검사

 <isLessEqual>

 property가 compareProperty 값 또는 compareValue의 값보다 작거나 같은지 검사


단항연산

 <isPropertyAvailable>

 property가 parameter에 있는지 검사. Beans에서는 property, Map에서는 Key를 찾는다

 <isPropertyAvailable>

 property가 parameter에 없는지 검사. Beans에서는 property, Map에서는 Key를 찾는다

 <isNull>

 property가 null인지 검사. Beans에서는 property, Map에서는 Key를 찾는다

 <isNotNull>

 property가 null이 아닌지 검사. Beans에서는 property, Map에서는 Key를 찾음

 <isEmpty>

 property가 null or 공백인지 검사.

 <isNotEmpty>

 property가 null or 공백이 아닌지 검사.


Element

 property

 parameter의 값을 비교할 때 사용

 prepend

 요소의 내용 가장 앞에 출력

 removeFirstPrepend

 처음 내용을 출력하는 하위 요소의 prepend값의 출력여부

 compareProperty

 property 속성에 의해 정의 된 property와 비교할 parameter 객체의 property.

 compareValue

 propery 속성에 명명된 property와 비교할 정적인 문자값


Example

<select id="getUserList" resultClass="userVO">

SELECT 

ID

, NAME

, ADDRESS

FROM USER_INFO

<dynamic prepend="WHERE">

<isNotEmpty property="search_id" prepend="AND"

USER_ID LIKE '%'#search_user_id# + '%'

</isNotEmpty>

<isNotEmpty property="search_name" prepend="AND">

NAME LIKE '%'#search_name# + '%'

</isNotEmpty>

</dynamic>

</select>


처음 조건절이 들어가려면 WHERE절이 필요하다. 그럴경우

dynamic을 사용하면 첫번째의 prepend기능을 자동으로 제거한다. 

(isNotEmpty의 search_id가 있을경우 prepend의 AND를 제거)





'Programming > DB' 카테고리의 다른 글

[DB] iBatis selectKey  (0) 2015.05.13
[DB] MS-SQL INSERT SELECT, UPDATE SELECT 문  (0) 2015.04.24
[DB] MSSQL 날짜 계산  (0) 2015.04.09
[DB] iBatis resultMap null 처리  (0) 2015.03.26
[DB] iBatis(MyBatis) Map, List 형식으로 받기  (0) 2015.01.20