Programing/Spring

Spring mybatis Oracle insert all 방법. 한번에 여러 행 추가 방법 list insert 방법 foreach insert

리커니 2020. 4. 6.
반응형

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>
반응형

댓글

💲 추천 글