Skip to the content.
<resultMap id="LowerKeyMap" type="com.infinigru.adsbatchscheduler.dto.LowerKeyMap"/>

    <select id="select" parameterType="string" resultMap="LowerKeyMap">
        <![CDATA[ SELECT * FROM (${sql}) A ORDER BY 1 ASC LIMIT #{_skiprows}, #{_pagesize} ]]>
    </select>

    <insert id="insert" parameterType="hashmap">
        INSERT INTO ${writeTable}
        VALUES (
        <foreach collection="item" item="value" separator=",">
            <![CDATA[
                #{value}
             ]]>
        </foreach>
        )
    </insert>

LowerKeyMap을 통해 Map형식으로 데이터를 받는다.

public class LowerKeyMap extends ListOrderedMap {
    public Object put(Object key, Object value) {
        return super.put(StringUtils.lowerCase((String) key), value);
    }
}

위에서 호출한대로 키/값을 형태로 변환해준다.

public class ItemToParameterMapConverters {
    public static <T> Converter<T, Map<String, Object>> createItemToParameterMapConverter(String writeTable) {
        return item -> {
            Map parameter = new HashMap<>();
            parameter.put("item", item);
            parameter.put("writeTable", writeTable);
            return parameter;
        };
    }
}

위에서 받아온 데이터를 item을 키로 값을 한번 더 감싼다.

그리고 테이블 명과 함께 Map을 보낸다.