MyBatis
[Mybatis] 마이바티스 forEach문법을 활용한 쿼리 반복 실행에 대해 알아보자.
모찌바라기
2022. 5. 25. 12:01
728x90
반응형
쿼리문을 작성하다보면 반복적인 작업을 해야 할 때가 있다. 예를 들면 테이블 안의
데이터와 하나하나 비교를 한다던가. 파라메터 값을 포함하고 있는 데이터를 갖고 오고 싶을 때
마이바티스의 forEach문법을 사용하면 java의 for과 같이 반복적으로 쿼리를 작성 할 수 있다.
바로 알아보도록 하자.
기본문법
<foreach item="[value]" collection="[array]" open="[시작값]" separator="[구분자]" close="종료값">
[실제 실행할 쿼리]
</foreach>
간단하다. 그냥 forEach 태그에 필요 옵션들을 추가해 사용하면 된다. 각 옵션에 대한 설명은 다음과 같다.
collection : 전달받은 인자/변수 즉, list 같은 배열 형식의 변수 item : 배열에서의 값 하나하나를 의미한다. 즉 value값을 의미 index : 현재 for문을 돌고있는 index를 의미한다.(0,1,2,3, ...) open : foreach문이 시작될때 앞에 삽입될 문자열 separator : foreach문에서 반복되는 값 사이사이에 넣어줄 문자열 close : foreach문이 종료될때 앞에 삽입될 문자열 |
샘플 테이블 및 데이터
CREATE TABLE mochi.RECURSIVE_BOOK(
BOOK_ID INTEGER NOT NULL,
PARENT_ID INTEGER,
BOOK_NAME CHARACTER VARYING(50) NOT NULL,
BOOK_QTY INTEGER,
CONSTRAINT BOOK_KEY PRIMARY KEY (BOOK_ID));
INSERT INTO mochi.RECURSIVE_BOOK VALUES (101, null, '도서', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (102, 101, '과학책', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (103, 101, '역사책', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (104, 101, '잡지', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (105, 102, '달나라_여행', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (106, 102, '내셔널지오그래픽_동물사전', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (107, 102, '블랙홀은_존재하는가', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (108, 106, '독화살개구리의_생존', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (109, 106, '오리너구리의_비밀', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (110, 104, '90년대_오렌지족_패션', 1);
INSERT INTO mochi.RECURSIVE_BOOK VALUES (111, 103, '6.25전쟁의_진실', 1);
샘플코드
testMapper.java
public void forEachTest() {
//testList 배열에 테스트값을 넣어 파라메터로 넘겨줌
String[] testList = {"내셔널지오그래픽_동물사전","역사책", "오리너구리의_비밀", "6.25전쟁의_진실"};
List<Object> resultList = session.selectList("dao.Inquiry.forEachTest", testList);
System.out.println(resultList);
}
testMapper.xml
<select id="forEachTest" parameterType="map" resultType="map">
SELECT
BOOK_ID,
BOOK_NAME
FROM MOCHI.RECURSIVE_BOOK
WHERE 1 = 1
AND BOOK_NAME IN
<foreach item="item" collection="array" open="(" separator="," close=")">
#{item}
</foreach>
</select>
결과
잘안보이지만 제대로 가져온다.
[SPRING] mybatis 동적 쿼리 foreach문 사용하기
- mybatis foreach문 사용하기 - mybatis 에서 동적쿼리인 foreach문을 사용하는 방법에 대해 알아보자. 코드를 보고 문법 및 사용 태그 옵션을 확인하도록하자. ▶예제1) SELECT * FROM cm_mine WHERE 1 = 1 AND id IN
mine-it-record.tistory.com
728x90
반응형