※ 실제 프로젝트를 진행하며 얻은 지식을 정리한 내용입니다.
※ 이론적인 내용보단 실무에서 사용하는 방식 위주로 작성하였습니다.
※ 잘못된 내용이 있다면 댓글로 지적 부탁드리겠습니다.
1. <foreach> 태그의 기본 개념
1) <foreach> 태그는 컬렉션(리스트, 배열 등)을 순회하며 SQL 문을 동적으로 생성합니다.
2) 이 태그를 사용하면 SQL 문 안에서 반복적인 데이터를 처리할 수 있습니다.
3) 기본 요소
<foreach collection="data" item="item" open="(" separator="," close=")">
#{item.seq}
</foreach>
1. collection: 반복할 데이터(List, 배열 등). 화면에서 던진 파라미터명과 같으면 사용하기에 편리합니다.
2. item: collection에 접근할 변수
3. open/close: 반복문 앞뒤에 추가할 문자열(괄호, 구분자 등).
4. separator: 반복 항목 사이에 구분자를 추가합니다.
2. UPDATE 예시
-- 키만 받아 update하는 경우
<update id="keyUpdate">
UPDATE tab1
SET col1 = 'N'
, col2 = NOW()
, col3 = #{userId}
WHERE col4 IN
<foreach collection="reqParam" item="item" open="(" separator="," close=")">
#{item.param1}
</foreach>
</update>
-- 파라미터 전체
<update id="multiUpdate">
<foreach collection="products" item="item" separator=";">
UPDATE products
SET param2 = #{item.param2}
, param3 = #{item.param3}
, param4 = #{item.param4}
, param5 = #{item.param5}
, updated_at = NOW()
WHERE param1 = #{item.param1} <!-- 각 항목에 대해 WHERE 절을 설정 -->
</foreach>
</update>
1. Where절에 특정 컬럼에 IN절을 활용하거나 전체를 여러번 UPDATE할 수 있습니다.
2. collection 같은 경우 ajax호출 시 던진 파라미터명과 맞춰주어야 합니다.
3. 예시로 아래와 같은 소스가 있을 때 data : { } 안에 있는, reqParam과 Mybatis의 collection값과 같아야 합니다.
3-1. 꼭 같지 않아도 별도 처리를 통해 가능하지만, 그냥 맞춰서 사용하는 것이 편리합니다.
4. item은 반복하는 개체에 접근이 가능한 변수입니다. 변수명은 자유롭게 사용해도 됩니다.
$.ajax({
url: '/example/main', // 요청을 보낼 URL
type: 'POST', // HTTP 메서드 (POST 방식)
data: { // 서버로 보낼 데이터
reqParam : params
},
success: function(response) {
console.log(response); // 서버 응답 처리
},
error: function(xhr, status, error) {
console.log('Error:', error);
}
});
5. 위 예시에서 data에 있는 파라미터(params) 값은 꼭 배열로 던져야 합니다. (params는 객체배열이라고 가정)
3. DELETE문 예시
<delete id="keyDelete">
DELETE
FROM tab1
WHERE col1 = 'N'
, col2 = #{userId}
, col4 IN <foreach collection="reqParam" item="item" open="(" separator="," close=")">
#{item.seq}
</foreach>
<delete>
4. INSERT문 예시
<insert id="multiInsert">
INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3, ...)
VALUES <foreach collection="reqParam" item="item" separator=",">
( #{item.param1}
, #{item.param2}
, #{item.param3}
, 'A',
, {item.param4}
, NOW()
, #{item.param5}
, NOW()
)
</foreach>
</insert>
1) INSERT의 경우는 VALUES에 작성하여 사용 가능합니다.
'2F(IT) > 툴 설정 및 사용법' 카테고리의 다른 글
| [MyBatis] Mybatis null 에러 해결 방법 (3) | 2025.01.11 |
|---|---|
| 크롬 개발자 모드 사용법(기본 디버깅) (0) | 2025.01.04 |
| [Notepad++] 문장 맨 앞이나 맨 뒤에 문자 추가(정규식) 활용 (0) | 2024.12.20 |
| 인포매티카 프로세스 확인 (3) | 2023.12.09 |
| [IntelliJ] 인텔리제이 단축키 (2) | 2023.11.12 |