IT/Ibatis

[Ibatis] Dynamic Query SQL

lejh 2020. 9. 29. 11:14

Dynamic Query Attribute 

속성 명 설명
prepend  요소의 내용 가장 앞에 출력
property 파라미터(Parameter)의 값을 비교할때 사용
removeFirstPrepend 처음 내용을 출력하는 하위 요소의 prepend값의 출력 여부
compareProperty 비교할 다른 매개변수명
compareValue 비교대상이 될 값

 

Dynamic Query SQL

태그 설명
<isEqual> property 값이 같을때만 쿼리 실행

ex )

<isEqual prepend="AND" property="useFl" compareValue="Y">   
   useFl = #useFl#
</isEqual>

useFl가 Y일 때만 isEqual 태그 안에 조건을 실행 #변수#

<isNotEqual> property 값이 같지 않을 때만 쿼리 실행

ex )

<isNotEqual prepend="AND" property="useFl" compareValue="Y">   
   useFl = #useFl#
</isNotEqual>

useFl가 Y일 아닐때만 isNotEqual 태그 안에 조건을 실행 #변수#


<isGreaterThan> property의 값이 비교값보다 클경우 쿼리를 실행합니다.

ex )

<isGreaterThan prepend="AND" property="user_age" compareValue="20">   
   USER_AGE = #user_age#
</isGreaterThan>

user_age가 20보다 클 경우 isGreaterThan 태그 안에 조건을 실행 #변수#

<isGreaterEqual> property의 값이 비교값보다 같거나 클경우 쿼리를 실행합니다.

ex )

<isGreaterEqual prepend="AND" property="user_age" compareValue="20">   
   USER_AGE = #user_age#
</isGreaterEqual>

user_age가 20보다 같거나 클경우 isGreaterEqual 태그 안에 조건을 실행 #변수#

<isLessEqual> property의 값이 비교값보다 작거나 같을 경우 쿼리를 실행합니다.

ex )

<isLessEqual prepend="AND" property="user_age" compareValue="20">   
   USER_AGE = #user_age#
</isLessEqual>

user_age가 20보다 작거나 같을 경우 isLessEqual 태그 안에 조건을 실행 #변수#

<isNull> property 값이 null일 경우 쿼리 실행
<isNotNull> property 값이 null이 아닐 경우 쿼리 실행
<isEmpty> property값이 비어있을경우 쿼리를 실행합니다.
<isNotEmpty> property값이 비어있지 않을 경우 쿼리를 실행합니다.
<isPropertyAvailable> property값이 유효할 경우 쿼리를 실행합니다.
<isNotPropertyAvailable> property값이 유효하지 않을 경우 쿼리를 실행합니다.
<iterate>

배열 타입의 파라메터를 받을 때 활용합니다.

ex)

<isNotEmpty prepend="AND" property="userList">
USER_AGE IN <iterate open="(" close=")" conjunction="," property="empIdArray">#userList[]#</iterate>
</isNotEmpty

배열의 값을 빼내어 콤마로 구분하여 괄호 '(' , ')' 내에 넣게 되죠.

ex) ('20', '21', '22', '33') 

<dynamic>

하위 태그에 일치되는 내용이 존재할 경우 where절을 붙인다.

가장 처음 일치요소의 prepend="AND" 는 생략된다.

ex)

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

  SELECT * FROM T_USER_INFO

  <dynamic prepend="WHERE">

    <isNotNull property="user_id" prepend="AND">

      user_id = #user_id#

    </isNotNull>

   </dynamic>

</select>

user_id 파라메터 값 test1234이라면 <isNotNull >태그의 prepend는 생략되고

WHERE 절이 붙어 WHERE user_id = #user_id# 쿼리가 실행된다.

#user_id# 는 test1234 값으로 치환 됩니다.

 

iBatis 관련 자료 : https://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html

'IT > Ibatis' 카테고리의 다른 글

[Ibatis] <selectKey> 사용 예제  (0) 2020.10.11
[Ibatis] Ibatis 설정  (0) 2020.10.04
[Ibatis] Ibatis 사용법 및 예제  (0) 2020.09.29
[Ibatis] Ibatis(아이바티스) 개념  (0) 2020.09.28