반응형
Spring mybatis Oracle insert all 방법. 한번에 여러 행 추가 방법 list insert 방법 foreach insert
for문을 반복하여 DB 커넥션을 반복하여 insert 하는 방법보다 속도도 빠르며 효율적인 방법입니다.
QUERY
INSERT ALL
INTO TABLE명 (컬럼명...) VALUES (값...)
INTO TABLE명 (컬럼명...) VALUES (값...)
.
.
.
INTO TABLE명 (컬럼명...) VALUES (값...)
SELECT * FROM SYS.DUAL
Mybatis의 foreach 를 활용하여 위와 같은 형태를 만들어 주면 됩니다.
<update id="insMpAuth" parameterType="java.util.List">
<foreach collection="list" item="item" open="INSERT ALL" close="SELECT * FROM DUAL" separator=" ">
INTO WEB_MP_MENU VALUES (#{item.menuId}, #{item.groupId},'N','N','N', SYSDATE,'N')
</foreach>
</update>
여기서 주의하셔야 할 점은 insert 문이지만 update 태그를 사용하여야 된다는 점입니다.
이유는 찾아봐야 될 듯 하네요.
insert 태그 사용 시 '명령어가 올바르게 종료되지 않았습니다.' 라는 sql 에러가 발생하게 됩니다.
mysql의 경우는 values 다음 부분만 foreach 태그 내에 작성하시면 됩니다.
<insert id="insMpAuth" parameterType="java.util.List">
INSERT INTO WEB_MP_MENU (
MENU_ID,
GROUP_ID,
SEL,
INS,
UDT,
DEL,
REG_DT
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.menuId},
#{item.groupId},
'N',
'N',
'N',
SYSDATE,
'N'
)
</foreach>
</insert>
반응형
'Programing > Spring' 카테고리의 다른 글
Spring MVC 의 흐름과 주요 컴포넌트, 웹 서비스 흐름 (0) | 2022.05.02 |
---|---|
Spring @Transactional 이 정상동작 하지 않는 이유 (0) | 2021.10.14 |
Spring Transaction 설정 방법. 에러발생? 롤백해. (0) | 2019.09.10 |
Oracle mybatis foreach merge 방법 collection merge문 (0) | 2019.08.13 |
Mybatis Mapper XML <select> 알짜만 빼먹기 (1) | 2019.07.08 |
댓글