IT수업/STS3

IT 수업 20주차 (126) MYBATIS 동적 쿼리

워제하 2024. 5. 7. 14:41

● 동적쿼리

동적 쿼리란 상황에 따라 다른 문법의 SQL을 적용하는 것을 말하며 런타임 중에 조건에 따라 쿼리를 생성하고 실행하는것을 의미한다. 즉, 쿼리의 일부 또는 전체가 런타임 데이터나 사용자의 입력에 따라 변경된다.

 

- 동적 SQL요소를 사용해 동적 쿼리를 작성한다.
<if>, <choose>, <where>, <when>, <otherwise>, <foreach>, <set>, <trim>

 

 

MemoMapper.java에서 작성한다.

 

 

MemoMapper.xml 에서 동적쿼리를 적용시킨다.

 

- if 문

 

그리고 MybatisTests에서 테스트해본다.

 

 

 

여기서 null 체크 하고 다시 출력해준다.

 

 

 

text에 O가 들어가있는 것만 출력시켜보기위해 param을 넣어준다.

 

 

 

 

when을 사용해서 다중분기문을 작성해본다.

열이 2개이기 때문에 when 분기문을 2개만 작성하면 된다.

 

condition은 SelectWhen에 적었기때문에 SelectIf에서는 적용 안된다.

 

 

param을 SelectWhen으로 받을 때 test하면 condition이 false이기 때문에 전체 검색이 된다.

 

 

이때 param을 SelectIf로 받으면 condition이 적용되지 않기 때문에 condition을 주석처리해도 된다.

또한 SelectIf는 text에만 적용했기 때문에 id에는 적용되지 않는다.

 

 

 

 

condition을 true로 바꾸면 해당 값이 나온다.

 

 

 

id는 SelectWhen에 적혀있기 때문에 SelectIf하면 안되고 SelectWhen으로 해줘야 원하는 값이 나온다.

(확인은 MemoMapper.xml에서 가능)