mybatis 배열을 insert 문에 등록 하는 경우 아래와 같이 추가 할 수 있습니다.
<insert id="listIns" parameterType="java.util.List">
<foreach collection="list" item="item" open="INSERT ALL" close="SELECT * FROM DUAL">
INTO DATA_TABLE
(
COLUMN1
,COLUMN2
,COLUMN3
,COLUMN4
)
VALUES
(GET_TAB_SEQ(), #{item.column2}, #{item.column3}, #{item.column4})
</foreach>
</insert>
GET_TAB_SEQ() 함수를 사용하는 이유는 시퀀스를 사용하는 경우 해당 쿼리문에 NEXTVAL을 추가 하는 경우 한번만 호출이 되어 중복 에러가 발생 되기 때문에
추가 해줘야 합니다.(해당 함수는 시퀀스 nextval 을 호출해서 넘겨주는 역활만 합니다.)
이렇게 하지 않고 select문을 이용해서 아래와 같이 작업 할 수 도 있습니다.
insert into service_code (
code,
serv_info_seq_id,
name,
default_key_type,
cre_date,
creator,
description,
state
) select
service_code_seq.nextval,
servInfoSeqId,
name,
defaultKeyType,
systimestamp,
creator,
description,
0
from (
<foreach collection="list" item="item" separator="union all">
select
#{item.servInfoSeqId} servInfoSeqId,
#{item.name} name,
#{item.defaultKeyType} defaultKeyType,
#{item.creator} creator,
#{item.description} description
from
dual
</foreach>
)
'ibatis' 카테고리의 다른 글
ibatis 한글 문서-비공개 (0) | 2015.03.04 |
---|