[oracle]오라클 ibatis iterate conjunction :: 개발/일상_Mr.lee

[oracle]오라클 ibatis iterate conjunction

Posted by Mr.mandu.
2016. 5. 1. 02:30 개발/DB

오랜만에 DB 쿼리 관련포스팅을 해보겠습니다.


다음과 같은 상황이 있습니다.


사용자의 목록을 뿌려주고 있는데요 ~

여기서 권한 별로 조건을 주어 검색하려고 합니다.

그러나 남, 여 하나하나씩은 

usr_gen = #sh_usr_gen# 같은 형식으로 하면 되지만 

'일반', '매니저' 두 조건은 어떻게 줘야 할까요?????




먼저 결과 화면을 확인해 보겠습니다.


저는 이와같은 결과를 얻기위해 열심히 검색했습니다.


제가 select 조건을 보시면



</isNotEmpty>

<isNotEmpty property="sh_usr_athList" prepend="and">

<iterate property="sh_usr_athList" open="(" close=")" conjunction="or">

usr_auth_cd = #sh_usr_athList[]#

</iterate>

</isNotEmpty>



sh_usr_athList는 배열변수 입니다.


이렇게 주었는데요

이제 의문이 iterate, open, close, conjunction의 의미를 파악하셔야 합니다.


iterate

 - 해당객체가 종료될때까지 반복 됩니다.


conjunction

 - iterate가 종료되면 그 뒤에 추가할 식을 입력합니다.


open과 close는 아래의 쿼리를 보며 이해하시면 편하실겁니다.


검색조건을 선택하고 로직을 수행한 결과 입력된 쿼리는

SELECT   *   FROM   xxx   where      (   usr_auth_cd = ?     or      usr_auth_cd = ?     or      usr_auth_cd = ?    )            

입니다.


앞뒤로 괄호가 붙은걸 확인하실수 있습니다.