동적 SQL
일반적으로 검색 기능이나 다중 입력 처리 등을 수행해야 할 경우 SQL을 실행하는 DAO를 여러 번 호출하거나 batch 기능을 이용하여 버퍼에 담아서 한번에 실행 시키는 방식으로 쿼리를 구현했다면, Mybatis에서는 이를 동적으로 제어 할수 있는 구문을 제공하여 좀 더 쉽게 쿼리를 구현 할 수 있도록 하는 기능을 지원한다
동적 sql구문에는 if, choose(when, therwise), trim(where, set), foreach 등 지원한다.
if
1. 동적 쿼리를 구현할 때 가장 기본적으로 사용되는 구문
2. 특정 조건을 만족할 경우 안의 구문을 쿼리에 포함 시킴
다중if
1. 필요로 하는 조건이 1개 이상일 시 if 구문 을 여러 개 사용 가능
choose, when, otherwise
1. 자바의 if-else, switch, JSTL의 choose 구문과 유사하며 주어진 구문 중 한 가지만 수행하고자 할 때
when = else if,
otherwise = else 라고 생각하면 편합니다.
trim, where, set
1. trim >> 쿼리 구문의 특정 부분을 없앨 때 쓰입니다.
2. where >> 기존 쿼리의 WHERE 절을 동적으로 구현할 때 쓰인다.
3. SET >> 기존의 UPDATE SET 절을 동적으로 구현할 때 쓰인다.
foreach 구문
1. 동적 쿼리를 구현할 때 collection에 대한 반복 처리를 제공한다.
속성명 | 설명 |
item | 반복 될 때 접근 가능한 각 객체 변수 |
index | 반복되는 횟수를 가리키는 변수, 0부터 순차적으로 증가 |
collection | 전달받은 인자로 반복에 쓰이는 Collection 객체, List나 Array형태만 가능 |
open | 해당 구문이 시작될 때 삽입할 문자열 |
separator | 반복되는 객체를 나열 할 때 사용할 구분자 |
close | 해당 구문이 종료될 때 삽입할 문자열 |
bind
1. 특정 문장을 미리 생성하여 쿼리에 적용해야 할 경우 사용한다.
2. _parameter 를 통해 전달받은 값에 접근하여 구문을 생성한다.
위에의 동적쿼리를 이용하여 실습을 진행할려고합니다.
'프로그래밍 > myBatis' 카테고리의 다른 글
myBatis - 6. 구문 빌더(SelectBuilder, SqlBuilder) (0) | 2021.10.11 |
---|---|
myBatis - 5. 동적 쿼리 실습 (0) | 2021.10.07 |
myBatis - 4. 실습 (class + xml 형식) (0) | 2021.10.07 |
myBatis - 3. 실습 (class형식) (0) | 2021.10.06 |
myBatis - 2. 실습 전체 목록 조회(xml형식) (0) | 2021.10.05 |