myBatis - 5. 동적 쿼리

동적 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 를 통해 전달받은 값에 접근하여 구문을 생성한다.

 

위에의 동적쿼리를 이용하여 실습을 진행할려고합니다.

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유