일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스프링 파일 삭제
- 쇼핑몰 포트폴리오
- 스프링 프로젝트
- ResponseEntity
- Bcrypt
- BCrypt 적용
- 로그인 기능
- spring 쇼핑몰
- 스프링 게시판
- 스프링 쇼핑몰 프로젝트
- 로그아웃 기능 구현
- 파일 업로드
- 회원가입 기능
- 스프링 메일 전송
- 스프링 쇼핑몰
- 스프링 프로젝트 설정
- 스프링 포트폴리오
- arraylist
- 인증번호 전송
- oracle 설치방법
- 정규표현식
- 이미지 출력
- 쇼핑몰 프로젝트
- spring 프로젝트
- 스프링 이미지
- 스프링 업로드
- 스프링 HikariCP
- 스프링 프로젝트 기본 설정
- 스프링 게시판 구현
- 삭제 구현
Archives
- Today
- Total
Kim VamPa
[MyBatis] <foreach> 사용법 본문
728x90
반응형
목표
MyBatis에서 사용하는 <foreach> 사용법
<foreach>를 왜 사용하고 어떻게 사용하는지를 알아봅니다.
순서
1. <foreach> 이해
2. 예제
1. <foreach>
전달받은 collection 인자 값을 바탕으로 반복적인 SQL 구문을 작성할 때 사용합니다. 주로 데이터 타입이 동일한 다수의 배열 데이터를 검색조건에 반영해야 할 때, OR 또는 IN 구문에서 많이 사용합니다.
<foreach>의 속성 다음 6가지가 있습니다.
1) collection 속성 - 전달받은 인자를 속성값으로 삽입합니다. Map, Array, List, Set 등과 같은 반복 가능한 객체를 전달할 수 있습니다.
2) item 속성 - collection속성에서 전달받은 collection 인자값을 대체할 '이름'을 속성 값으로 삽입합니다.
3) open 속성 - 구문이 시작될때 삽입할 문자열을 속성 값으로 삽입합니다.
4) close 속성 - 구문이 종료될때 삽입할 문자열을 속성 값으로 삽입합니다.
5) separator 속성 - 반복되는 구문 사이에 삽입할 문자열을 속성값으로 삽입합니다.
6) index 속성 - index값을 부를 일종의 변수명을 속성값으로 삽입합니다. 태그 내에 #{index}를 통해 호출할 때 0부터 반환됩니다.
2. 예제
전달받은 배열
Java 코드
int[] bnoArr = {1,2,3,4,5};
public List<BoardVO> getList(int[] bnoArr) throws Exception;
=> getList(bnoArr);
<select id="getList" resulttype="BoardVO">
select bno, title, content, writer from tbl_board where bno IN
<foreach item="bno" collection="bnoArr" open="(" close=")" separator=",">
#{bno}
</foreach>
</select>
결과 쿼리
select bno, title, content, writer from tbl_board where bno IN (1,2,3,4,5)
String typeArr = {T,C}
public List<BoardVO> getList(String[] arr, String keyword) thorws Exception;
=> getList(typeArr,keyword);
<select id="getList" resulttype="BoardVO">
select bno, title, content, writer from tbl_board where
<trim prefixOverrides="OR">
<foreach item="type" collection="typeArr">
<trim prefix="OR">
<choose>
<when test="type == 'T'.toString()">
title like '%'||#{keyword}||'%'
</when>
<when test="type == 'C'.toString()">
content like '%'||#{keyword}||'%'
</when>
<when test="type == 'W'.toString()">
writer like '%'||#{keyword}||'%'
</when>
</choose>
</trim>
</foreach>
</trim>
</select>
결과 쿼리
select bno, title, content, writer from tbl_board where
title like '%'||#{keyword}||'%' OR content like '%'||#{keyword}||'%'
REFERENCE
DATE
- 2020.03.08
728x90
반응형
'공부 > 데이터베이스' 카테고리의 다른 글
[MyBatis] <trim> 사용법 (5) | 2021.03.07 |
---|---|
[MyBatis] <choose>, <when>, <otherwise> (1) | 2021.03.06 |
[MyBatis] <sql>, <include> 사용법 (2) | 2021.03.05 |
[MyBatis] <if> 사용법 (1) | 2021.03.04 |
자동값 증가(Oracle, MySQL)(IDENTITY, AUTO_INCREMENT) (4) | 2021.02.03 |
Comments