스프링 부트와 같은 거대한 프레임워크를 공부하다 보면 문법에 맞지 않아서 고생(보통 '삽질')을 많이 합니다. 웹 프로그래밍을 할 때, 보통 DB에서 무엇인가를 가져오기 위해 쿼리를 작성합니다. 이때 오류가 가장 많이 나타나는 것 같습니다.
이번 포스팅에서는 Mybatis 사용시 동적 쿼리 중 LIKE를 사용하는 방법에 대해서 알아보도록 하겠습니다.
SQL에서 포함되는 글자를 찾아주는 LIKE
관계형 데이터베이스(RDBMS)에서 특정 문자열이 있는지 검색하고 싶을 때 사용하는 문법이 LIKE입니다. LIKE문의 사용법은 아래와 같이 사용합니다.
SELECT * FROM table_name
WHERE column_name LIKE '%test%';
MySQL 또는 MariaDB의 Query 구문입니다. 조건절에 LIKE를 붙이고 앞뒤로 %를 붙여서 중간에 test라는 글자가 포함된 모든 컬럼을 가져오게 됩니다. SQL문을 단독적으로 사용하게 되면 전혀 문제가 없는 문장입니다.
하지만 Mybatis에서는 문제가 발생한다는 사실을 알았습니다.
Mybatis에서 LIKE절 사용하기
스프링부트를 사용하고 Mybatis를 사용하고 있다면 DB가 무엇인지에 따라서 LIKE를 사용하는 방법이 조금씩 다르다는 사실을 알게 되었습니다. 먼저 MySQL 혹은 MariaDB에서 사용하는 방법입니다.
1. MySQL / MariaDB에서의 LIKE
SELECT * FROM table_name
WHERE column_name LIKE CONCAT('%', #{test}, '%');
2. Oracle DB에서의 LIKE
SELECT * FROM table_name
WHERE column_name LIKE '%' || #{test} || '%';
3. MS-SQL에서의 LIKE
SELECT * FROM table_name
WHERE column_name LIKE '%' + #{test} + '%';
통일이 되었으면 좋았겠지만 DB마다 Query도 다르고 특성도 다르니 개발하시는 분들이라면 알아두시는 편이 좋을 것 같습니다. 요즘 가장 핫한 PostgreSQL은 어떻게 사용하는지는 아직 해보지 않았네요.
이번 포스팅에서는 스프링 부트를 사용하고 Mybatis를 사용할때 LIKE 절을 사용하는 방법에 대해서 알아보았습니다. 프레임워크를 사용하면 보다 편하게 개발을 할 수 있지만 형식에 맞게 사용해야 하기 때문에 처음이 가장 어려운 것 같네요. 도움이 되셨으면 합니다. 이상입니다.
2021.03.08 - [쿤즈 Dev/Spring Boot] - [Spring Boot] Mybatis 에서 SQL 조건문 사용 방법
'쿤즈 Dev > Spring Boot' 카테고리의 다른 글
[Spring Boot] Mybatis 변수 사용시 #{ } 와 ${ } 의 차이 (0) | 2021.05.05 |
---|---|
[Spring Boot] Mybatis 에서 조건문 사용시 null 과 zero size string 구분 방법 (0) | 2021.03.16 |
[Spring Boot] 정적소스 수정 후 서버 재시작 없이 적용 방법 (0) | 2021.03.09 |
[Spring Boot] Mybatis 에서 SQL 조건문 사용 방법 (0) | 2021.03.08 |
[Spring Boot] Lombok 어노테이션 활용하기 (0) | 2021.03.02 |
댓글