study/java
[MyBatis] List 파라메터 foreach 사용 (INSERT, DELETE) - MySQL
intseq
2023. 7. 12. 08:48
[MyBatis] List 파라메터 foreach 사용 (INSERT, DELETE) - MySQL
Oracle 버전이 궁금하다면 ? 클릭 !
[MyBatis] List 파라메터 foreach 사용 (INSERT, DELETE, MERGE)
[MyBatis] List 파라메터 foreach 사용 (INSERT, DELETE, MERGE) foreach문은 사용할 때마다 사용되는 위치도 속성도 어려워서 더이상 헷갈리지 않기 위해 남겨본다 :-) ! foreach문의 속성은 다음과 같다......
haenny.tistory.com
foreach문의 속성은 다음과 같다.
구분 | 설명 |
collection | 전달받은 인자값 |
item | 전달받은 인자값을 다른이름으로 대체 |
open | 해당 구문이 시작할 때 |
close | 해당 구문이 끝날 때 |
index | 항목의 인덱스 값을 꺼낼 때 사용할 변수 이름을 지정 |
separator | 구분자. 한번 이상 반복할 때 반복되는 사이에 해당 문을 넣어줌 |
다음 예제의 파라미터로 활용되는 VO 객체이다.
public class TestVO {
private String idx;
private String timestampAccident;
private String vin;
private String dataGb;
@Override
public String toString() {
return "TestVO [idx=" + idx + ", timestampAccident=" + timestampAccident
+ ", vin=" + vin + ", dataGb=" + dataGb + "]";
}
public void setIdx(String idx) {
this.idx = idx;
}
public void setTimestampAccident(String timestampAccident) {
this.timestampAccident = timestampAccident;
}
public void setVin(String vin) {
this.vin = vin;
}
public void setDataGb(String dataGb) {
this.dataGb = dataGb;
}
}
INSERT 문
<insert id="insCompareResult" parameterType="java.util.List" >
INSERT INTO KTF_COMPARE_RESULT(
IDX
, TIMESTAMP_ACCIDENT
, VIN
, DATA_GB
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.idx}
, #{item.timestampAccident}
, #{item.vin}
, #{item.dataGb}
)
</foreach>
</insert>
DELETE 문
- 파라메터가 리스트인 경우
<delete id="delCompareResult" parameterType="java.util.List">
DELETE FROM KTF_COMPARE_RESULT
<where>
<foreach collection="list" item="item" open="" close="" separator="OR">
(IDX = #{item.idx} AND VIN = #{item.vin})
</foreach>
</where>
</delete>
- 파라메터가 배열인 경우
<delete id="delCompareResult" parameterType="java.util.Arrays">
DELETE FROM KTF_COMPARE_RESULT
<where>
TIMESTAMP_ACCIDENT IN
<foreach collection="array" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</where>
</delete>