스프링부트 프레임워크를 사용하면서 Mybatis를 이용해 DB에 접근해서 데이터를 가져오다보면 여러가지 다양한 조건이 필요합니다. 특히 조건이 다양하고 null 값이 포함될 수 있는경우 where 절에는 and 를 붙여서 길어질 수 있죠.
이때 저의 경우는 문제점이 하나 발생했습니다. 이번 포스팅에서는 스프링 부트 Mybatis 사용시에 발생될 수 있는 where절의 문제점을 해결해 보도록 하겠습니다.
Spring Boot Mybais 조건 활용하기
SQL문을 이용해서 Query를 할 경우 다양한 조건이 포함될 수 있습니다. 이때 if ~ else와 동일한 조건문을 만들 수 있습니다. 이렇게 만드는 이유는 다음과 같습니다.
SELECT *
FROM board
WHERE 조건1 and 조건2 and 조건3
만약 조건1이 null이라 포함되지 않는다고 하면 구문에서 where 이 사라질 수 있습니다. 즉, 조건1이 무조건 있어야만 where절의 시작이 될 수 있다는 것이죠. 그래서 java에서는 모두 if 문을 사용해서 지금 조건이 처음 조건인지를 판단하도록 합니다.
하지만 Mybatis에서 사용하려 하니 순간 막막했습니다. 그래서 Mybatis 문법을 찾아보니 아래와 같이 사용할 수 있었습니다.
<where>
<if test="condition1">AND 조건1</if>
<if test="condition2">AND 조건2</if>
<if test="condition2">AND 조건3</if>
</where>
첫 구문부터 AND가 있지만 이게 첫 번째 조건이면 Mybatis에서 알아서 제거하고 조건문을 만들어 줍니다. 덕분에 굉장히 편해진 구문이 되었습니다.
다양한 조건이 있는 경우에 Mybatis에서 활용할 수 있는 <where>과 <if>문법에 대해서 알아보았습니다. 처음 시작하면 익숙해지기까지 계속 오류를 잡아내고 새로운 것을 배워야하는 어려움은 있지만 프로젝트를 만들다보면 금방 적응하고 익숙해 지게 됩니다. 도움이 되셨으면 합니다. 이상입니다.
'쿤즈 Dev > Spring Boot' 카테고리의 다른 글
[Spring Boot] Mybatis 변수 사용시 #{ } 와 ${ } 의 차이 (0) | 2021.05.05 |
---|---|
[Spring Boot] Mybatis 에서 조건문 사용시 null 과 zero size string 구분 방법 (0) | 2021.03.16 |
[Spring Boot] Mybatis 동적쿼리 LIKE 사용 방법 (0) | 2021.03.12 |
[Spring Boot] 정적소스 수정 후 서버 재시작 없이 적용 방법 (0) | 2021.03.09 |
[Spring Boot] Lombok 어노테이션 활용하기 (0) | 2021.03.02 |
댓글