myabtis 하나의 메서드에 여러 개의 쿼리 작성하기 (MultiQueries)

insert를 한 묶음으로 만들기

  • 요청 한 번에 여러 개의 insert를 할 필요가 있었다.
  • 다른 테이블 간 의존 관계가 있었다. 부모 테이블의 pk가 자동 생성되면, 그 값을 select하여, fk로 삽입하였다.
  • list를 통해 여러 개를 삽입하였다.
<insert id="addList" parameterType="java.util.List">
    <foreach item="item" collection="list">
        insert into DICTIONARY(word, pronunciation, part_of_speech, reference, definition, sentence, user_no)
        values
        (#{item.word}, #{item.pronunciation}, #{item.partOfSpeech}, #{item.reference}, #{item.definition}, #{item.sentence}, #{item.userNo}) ;

        insert into source (dictionary_no, type, idx_on_sheet, idx_of_sheet, name_of_sheet)
        values ((select max(no) from dictionary), #{item.type}, #{item.idxOnSheet}, #{item.idxOfSheet}, #{item.nameOfSheet}) ;
    </foreach>
</insert>
  • mybatis의 쿼리를 작성할 때 보통 세미콜론을 생략한다. 이 경우 쿼리가 끝나면 세미콜론을 붙인다.
  • myabtis를 연결할 때 url 파라미터를 추가해야 한다 : allowMultiQueries=true