##서론
오늘 팀회의에서 공유된 이슈중 하나가 for문을 반복하며 DB커넥션을 반복하여 insert를 하게되는 방법은 한 사용자가 여러개의 DB커넥션을 맺게되면 다른 사용자들의 DB커넥션의 문제가 발생한다는 것이였다.
이 이슈를 해결할 수 있는 방법 중 하나가 MyBatis의 foreach를 활용하여 INSERT ALL쿼리를 사용하는 것이다.
여러 개의 INSERT문을 한 번에 처리할 수 있다.
INSERT ALL
INTO TABLE명 (컬럼명...) VALUES (값...)
INTO TABLE명 (컬럼명...) VALUES (값...)
.
.
.
INTO TABLE명 (컬럼명...) VALUES (값...)
SELECT * FROM SYS.DUAL
<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에러가 발생하게 된다.