[Mybatis]동적SQL

작업
진행 상태
이메일
진행일시
2021/03/20

1. 동적SQL이란?

검색기능이나 다중입력처리 등을 수행해야할 경우 SQL을 실행하는 DAO를 여러번 호출하거나 batch기능을 써야하는데 마이바티스에서는 이를 동적으로 제어 할 수 있는 구문을 제공하여 조금더 쉽게 쿼리를 구현하게 해준다.

2. 지원 구문 종류

1.
if문
2.
choose문(when,otherwise)
3.
trim(where, set)
4.
foreach

2-1 if구문

동적 쿼리중 가장 기본적으로 사용되는 구문
특정 조건을 만족할 경우안의 구문을 쿼리에 포함시킨다
if구문 예시, 다중구문도 쓸수 있다

2-2 choose(when, otherwise)

자바의 if-else, switch, JSTL의 choose구문과 유사하며 주어진 구문 중 한가지만을 수행하고자 할때 사용한다.
다중구문

2-3 trim(where , set)

trim은 쿼리의 구문의 특정부분을 없앨 때 사용
where은 기존 쿼리의 where 절을 동적으로 구현할 때 사용
set은 기존의 update set절을 동작시킬 때 구현할 때 사용

2-3-1

1.
where의 구문으로 변경
<where> 태그는 단순히 where만을 추가하지만, 만약 태그 안의 내용이 'AND' , 'OR'로 시작할 경우 AND, OR를 제거한다
-예시

2-3-2

2.trim구문
<trim>태그는 태그 안의 내용 완성될 떄 처음시작할 단어와 시작 시 제거해야할 단어를 명시하여
where와 같은 내용으로 구현 할 수 있다.

2-3-3

3.foreach구문
동적쿼리를 할 때 Collection에 반복처리를 수행해준다.
예시

3. bind구문

3-1 bind구문이란 ??

특정문장을 미리 생성하여 쿼리에 적용해야할 경우 사용
_parameter를 통해 전달받은값에 접근하여 구문을 생성한다
예시