<?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.ga.api.service.upload.DynamicInsertMapper">

    <!--
        동적 단건 INSERT.
        targetTable 은 UploadService 의 whitelist 검증 후 전달한다.
        row Map 의 key/value 를 동적으로 조립한다.
    -->
    <insert id="insertRow">
        INSERT INTO ${targetTable} (
            <foreach collection="row" index="col" item="val" separator=",">
                ${col}
            </foreach>
        ) VALUES (
            <foreach collection="row" index="col" item="val" separator=",">
                #{val}
            </foreach>
        )
    </insert>

    <!--
        동적 배치 INSERT.
        rows 첫 번째 맵의 key 순서로 컬럼명을 결정한다.
    -->
    <insert id="insertBatch">
        INSERT INTO ${targetTable} (
            <foreach collection="rows[0]" index="col" item="val" separator=",">
                ${col}
            </foreach>
        ) VALUES
        <foreach collection="rows" item="row" separator=",">
            (
            <foreach collection="row" index="col" item="val" separator=",">
                #{val}
            </foreach>
            )
        </foreach>
    </insert>

</mapper>
