[MyBatis] 객체 (VO, DTO) 안의 리스트를 사용해서 인서트 작업하기
뭐 비슷한 짓을 한적이 있다.
근데 내용이 묘하게 다르니까 뭐
위에거는 컬럼명부터 쭊쭊 넣은거고
<insert id="as" parameterType="VO">
INSERT INTO equip_data (
service_id, device_id, ltid, sub_device_id , ctrlrate_ch01, ctrlrate_ch02, ctrlrate_ch03, ctrlrate_ch04
) VALUES (
#{serviceId}, #{deviceId}, #{ltid}, #{subDeviceId}
, #{ctrlrateCh01}, #{ctrlrateCh02}, #{ctrlrateCh03}, #{ctrlrateCh04}
)
</insert>
위와 같은 문장을 foreach로 바꾸겟다는 의지
원래 저 Rate들은 List에 담겨잇다.
그렇기에 아래와 같이 바꿔주면 된다.
<insert id="insertEquipData" parameterType="DataVO">
<![CDATA[
INSERT INTO equip_data (
service_id, device_id, ltid, sub_device_id
, ctrlrate_ch01, ctrlrate_ch02, ctrlrate_ch03, ctrlrate_ch04
) VALUES (
#{serviceId}, #{deviceId}, #{ltid}, #{subDeviceId},
]]><foreach collection="ctrlRateList" item="ctrlRateList" separator="," >
${ctrlRateList}
</foreach>
<![CDATA[
)]]>
</insert>
Collection 객체안의 List Map등의 변수
item = alias
separator = 구분자
index = 인덱스 << 안씀
open close 등의 설정도 가능하다
주의할 점은 내가 CDATA로 감쌋는데
CDATA로 감싸면 foreach가 인식이 안되드랑