<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을 보낸다.