728x90
반응형

iBatis는 볼 수록 놀랍네..

 

iterate를 이용해서 UNION을 다음과 같이 구현할 수 있습니다.

 

 

     <select id="step100" parameterClass="java.util.HashMap"
            resultClass="hashmap" remapResults="true">
      SELECT xxxx 
      FROM
      (
        <iterate property="dateList" open="" close="" conjunction="UNION ALL">
        SELECT
          xxx
        FROM  $tabList[]$

        WHERE rownum = 1
        </iterate>
      ) x
    </select>

JAVA 쪽에서는 다음과 같이 parameter를 넘길 수 있습니다.

 

 

 

        HashMap<String, ArrayList<String>> tabList = new HashMap<String, ArrayList<String>>() ;

        ArrayList<String> dList = new ArrayList<String>() ;

       

        dList.add( "080220" ) ;
        dList.add( "080221" ) ;
        dList.add( "080222" ) ;
        dList.add( "080223" ) ;

       

        tabList.put( "tabList", dList ) ;

 

         ...

         ...

 

 

        List list = sqlMap.queryForList( "step100", tabList ) ;

 

 

iterate를 이용하면 WHERE 절에 IN( ... ) 구현 혹은 OR 같은 것도 구현하기 쉽습니다.

 

iterate에 open="(" close=")" 를 주어 iterate 시작과 끝에 괄호를 줄 수도 있습니다.

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,