[DB] MyBatis 동적 SQL - <foreach>

seonjeong·2023년 4월 27일
0

DB

목록 보기
3/7

💖 <foreach>

  • 목록형 데이터로 SQL문을 만들 때 사용
  • IN 조건을 만들 때 편리

item : 한 개의 항목을 가리키는 변수 이름 지정
index : 인덱스 값을 꺼낼 때 사용하는 변수 이름 지정
collection : java.util.List 구현체나 배열 객체 지정
open : 최종 반환값의 접두어 지정
close : 최종 반환값의 접미어 지정
separator : 구분자 문자열 지정


🔥 문법

<foreach
	item="항목"
	index="인덱스"
    collection="목록"
    open="시작문자열"
    close="종료문자열"
    separator="구문자"
    >
</foreach>
<foreach collection="List or Array" item="alias" ></foreach>

🔥 예시

<select id="selectPostIn" resultType="domain.blog.Post">
  SELECT *
  FROM POST P
  WHERE ID in
  <foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
        #{item}
  </foreach>
</select>

List

// List일 경우
List<String> list = new ArrayList<>();
list.add("abc");
list.add("bcd");
list.add("cde");

// foreach
SELECT * FROM LIST 
WHERE ID IN
<foreach collection="list" index="index" item="item" open="(" close=")" seperator=",">
	#{abc}
</foreach>

-> list 테이블에서 id가 abc, bcd, cde인 값들을 가져온다

Array

// Array일 경우
String[] arr = {"abc", "cde"}

// foreach
SELECT * FROM lIST
WHERE ID IN
<foreach collection="arr" index="index" item="item" open="(" close=")" seperator=",">
	#{item}
</foreach>

-> list 테이블에서 id가 abc,cde인 값들을 가져온다




Reference

https://atoz-develop.tistory.com/entry/MyBatis-%EB%8F%99%EC%A0%81-SQL-choose%EC%99%80-set%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EB%8F%99%EC%A0%81-SQL-%EB%A7%8C%EB%93%A4%EA%B8%B0
https://java119.tistory.com/85

profile
🦋개발 공부 기록🦋

0개의 댓글