Develope/DataBase

[MyBatis] 객체 (VO, DTO) 안의 리스트를 사용해서 인서트 작업하기

고로이 2018. 1. 26. 14:14
반응형


http://vivi-world.tistory.com/entry/Mybatis-foreach-%EA%B5%AC%EB%AC%B8%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-Insert-%EB%8C%80%EB%9F%89-%EC%82%BD%EC%9E%85%ED%95%98%EA%B8%B0?category=679678




뭐 비슷한 짓을 한적이 있다.


근데 내용이 묘하게 다르니까 뭐




위에거는 컬럼명부터 쭊쭊 넣은거고



<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가 인식이 안되드랑




반응형