728x90
반응형

여러개의 데이터가 담긴 List를 한번이 insert 해야한다면 당황하기 마련이다.

 

이를 위해서는 insert select 구문과 union all 사용해야한다.

 

-------sql query---------

 

insert into tb_ccb_appl_bscost1 (
   appl_id, bs_year, sub_bs_id, sub_bs_name
  )

select appl_id, bs_year, sub_bs_id, sub_bs_name
from dual

union all

select appl_id, bs_year, sub_bs_id, sub_bs_name
from dual

....................................

....................................

 

을 반복해야한다. (여기서 dual은 가상의 테이블이다.)

 

가상의 테이블에 데이터를 집어넣은 뒤 그것을 한번에 밀어넣는 식이다.

 

union all 로 구분되는 하나의 dual 들은 1개의 row 값이 된다.

 

이 sql query를 java에서 모두 만든뒤 던지는 방법도 있지만 ibatis는 반복문을 자체 제공하기 때문에 더 편리하다.

 

----------ibatis iterate------------------

insert into tb_ccb_appl_bscost1 (
   appl_id, bs_year, sub_bs_id, sub_bs_name
  )

  <iterate property="applBsCostList" conjunction=" union all ">
 
   select #applBsCostList[].appl_id#,
   #applBsCostList[].bs_year#,
   #applBsCostList[].sub_bs_id#,
   #applBsCostList[].sub_bs_name#
   from dual
  </iterate>

위의 iterate 는 해당 property 가 종료될때 까지 반복되며 property는

List<Object>를 TreeMap 에 담아 넘어오는 객체다.

 

conjunction 은 iterate 가 종료된 뒤 한번 더 실행될 때 query 문의 뒤에 붙는 수식을

지정해 줄 수 있다.

728x90
반응형
블로그 이미지

nineDeveloper

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

,