여러개의 데이터가 담긴 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 문의 뒤에 붙는 수식을
지정해 줄 수 있다.
'SQL > IBATIS' 카테고리의 다른 글
[iBatis] iBatis 에서 Dynamic Mapped Statement 사용시 문제 (0) | 2014.02.19 |
---|---|
SqlMapClient API를 통해 statement를 수행하기. (0) | 2014.02.19 |
배치(Batches) (0) | 2014.02.19 |
Data Mapper로 프로그래밍하기: The API (0) | 2014.02.19 |
[본문스크랩] IBatis개발자 가이드 (0) | 2014.02.12 |
Ibatis 시작하기 -1- (0) | 2014.02.12 |
IBatis 시작하기 2 (0) | 2014.02.12 |
? and ? 와같은 ibatis 파라미터 두개로 처리하기 (0) | 2014.02.12 |