웹 개발/웹 개발

Mybatis 다중행 삽입

크리스피코드 2023. 1. 30. 15:55

Mybatis에서 다중행 삽입을 위해서 반복문인 foreach태그를 사용할 수 있다.

 

다중행을 Mybatis를 사용해 삽입하기 위해서는 <insert>가 아닌 <update>를 사용해야한다. parameterType은 데이터가 저장된 Collection 클래스를 입력한다.

 

주의해야할 점은 #{변수명}을 작성할 때 반드시 #{item이름.변수명}으로 작성해야한다.

 

<update id="createPostAttach" parameterType="java.util.List">
    <selectKey resultType="int" order="BEFORE" keyProperty="seq">
        SELECT NVL(MAX(SEQ), 0) + 1
          FROM ATTACH
    </selectKey>
    <foreach collection="list" item="attachVO"
             open="INSERT ALL" close="SELECT * FROM DUAL" separator=" " index="idx">
        
        INTO ATTACH (SEQ
                    ,FILENAME
                    ,FILESIZE
                    ,THUMBNAIL
                    ,REGDATE
                    ,ETP_ID)
             VALUES (#{idx} + #{seq}
                    ,#{attachVO.filename}
                    ,#{attachVO.filesize}
                    ,#{attachVO.thumbnail}
                    ,SYSDATE
                    ,#{attachVO.etpId})
    </foreach>
</update>

 

 

* <foreach>의 속성

collection 반복문을 사용할 Collection 클래스를 설정한다.
item Collection의 요소값에 해당하는 VO 클래스를 설정한다.
open 반복문 시작 전 앞에 붙는 접두사를 설정한다.
close 반복문 끝 이후 뒤에 붙는 접미사를 설정한다.
separator 반복문 사이의 구분자를 설정한다.
index 인덱스의 변수명을 설정한다.