[MyBatis] foreach문 사용하여 List 한번에 저장하기

moonno·2024년 4월 12일

SQL

목록 보기
1/1
post-thumbnail

* 인터페이스(Mapper.java)

public interface InsertMapper {
    
    /* 리스트 저장 */
    int insertList(ReqDTO reqDTO);
}

* Insert문(Mapper.xml)

자바에서 DTO에 담아보낸 List를 foreach를 이용하여 한번에 저장

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.batch.mapper.InsertMapper">

    <!-- 리스트 저장 -->
    <insert id="insertList" parameterType="ReqDTO">
        /*!com.batch.mapper.InsertMapper.insertList*/
        INSERT
            INTO
            TBL_A
        (
            COL_1
            , COL_2
            , COL_3
        )
        SELECT
            SEQ_A.NEXTVAL  /* 시퀀스 사용 컬럼 */
            , A.COL_2
            , A.COL_3
        FROM
            (
            <foreach collection="selectList" item="item" separator="UNION ALL">
            SELECT
                #{item.col1} AS COL_2
                , #{item.col2} AS COL_3
            FROM
                DUAL
            </foreach>
            ) A
    </insert>

</mapper>

참고 : 자바에서 DTO에 List를 담아 Insert를 호출하는 코드


profile
Developer Moona

0개의 댓글