Full Stack Web Developer.
Syaku (샤쿠)
_____________ 저랑 일해요!!

Java, JS (ES6+), Spring, Spring security, jQuery, Reactjs, Bootstrap.

        

Statistics Graph


Spring Boot 2 보기 Front-end 보기 DevOps 보기 Spring 3 보기 Spring Security 3 보기

iBATIS 배열 파라메터 처리 : iBATIS Array Parameter

written by Seok Kyun. Choi. 최석균

배열로 넘긴 파리메터 값을 처리하는 방법에는 iterate 노드를 사용한다. 스트럿츠에도 반복문을 사용할 때 사용하는 문구이다.
** 테이블 구조 및 iBATIS 기본적인 설명은 생략한다.

* 로직

<%
// 배열 파라메터
String worker_idx_ar[] = request.getParameterValues("worker_idx");
HashMap hm = new HashMap() ;
// input
hm.put("worker_idx_ar", worker_idx_ar);
// result
List posttimeRet = sqlMap.queryForList("select-post-time-array",hm);
%>

<%
// 배열
ArrayList worker_idx_ar = new ArrayList();

while(생략...) {
  int worker_idx = 생략;
  worker_idx_ar.add(worker_idx);
}

HashMap hm = new HashMap() ;
// input
hm.put("worker_idx_ar", worker_idx_ar);
// result
List posttimeRet = sqlMap.queryForList("select-post-time-array",hm);
%>


* sqlMap
파리메터 값에 따옴표( ' ) 를 덮지 않을 경우 $ , 따옴표를 덮을 경우 # 을 붙이자. 이도저도 아닐경우 #을 사용하자. (참조 27 줄)
SELECT문만 예제 소스로 작성했지만, INSERT 나 UPDATE , DELETE 등을 예제를 참조하여 사용하면된다.

  <!-- 넘겨줄 데이터 설정 -->
  <resultMap id="result-post-time" class="ParkingModel">
    <result property="post_time_idx" column="post_time_idx" />
    <result property="post_time_stime" column="post_time_stime" nullValue="0" />
    <result property="post_time_etime" column="post_time_etime" nullValue="0" />
    <result property="post_time_num" column="post_time_num" nullValue="0" />
    <result property="worker_idx" column="worker_idx" />
    <result property="time_idx" column="time_idx" />
    <result property="time_title" column="time_title" nullValue="" />
  </resultMap>

  <select id="select-post-time-array" parameterClass="hashMap" resultMap="result-post-time">
    SELECT
        P.POST_TIME_IDX,
        P.POST_TIME_STIME,
        P.POST_TIME_ETIME,
        P.POST_TIME_NUM,
        P.WORKER_IDX,
        P.TIME_IDX,
        T.TIME_TITLE
      FROM PARKING_POST_TIME P 
      LEFT OUTER JOIN PARKING_COMMON_TIME T ON P.TIME_IDX = T.TIME_IDX

    <!-- where 문이 없을 경우 동적으로 삽입 -->
    <dynamic prepend="WHERE">

      <!-- worker_idx_ar 존재할 경우 -->
      <isNotEmpty prepend="AND" property="worker_idx_ar">
        <iterate prepend="P.WORKER_IDX IN " property="worker_idx_ar" open="(" close=")" conjunction=",">
          $worker_idx_ar[]$
        </iterate>
      </isNotEmpty>

    </dynamic>

    ORDER BY P.POST_TIME_NUM ASC
  </select>



 

http://syaku.tistory.com

◀ PREV 12345 NEXT ▶