■ Data Skill ■/MyBatis

[iBatis] iBatis LIKE 구문과 Dynamic SQL을 사용할 때

한길(One Way) 2023. 2. 25.

1. LIKE 검색

보통 MySQL에서 like 검색을 쓰는 경우, 다음과 같다. 

SELECT * FROM 테이블 명 WHERE 테이블명.name LIKE "%검색할문구%"  


이를 iBatis 안에서 쓸려면concat으로 조합해 주어야 잘 작동한다.

SELECT * FROM 테이블 명 WHERE 테이블명.name LIKE CONCAT('%',#검색할문구#,'%')

 


2. Dynamic SQL

command로 값을 받아올 때 그 값이 있을 수도 있고 없을 수도 있는데 그것을 dynamic 쿼리를 통해 한번에 처리할 수 있어 효과적이다.

SELECT * FROM 테이블 명 
WHERE 1 = 1
 <dynamic>
     <isNotEmpty prepend="AND" property="변수명">
            테이블명.name LIKE CONCAT('%',#검색할문구#,'%')
      </isNotEmpty>
  <dynamic>
AND 다른 조건들 추가...

위 예에서1=1을 먼저 추가해 준 이유는 dynamic 쿼리에서 에러가 있었을 때 여기에 prepend로 WHERE를 걸었다면 그 문구가 아예 실행이 안되고 다음 AND 다른 조건들로 넘어가게 된다. 그래서 mysql 문법 상 WHERE 없이 AND가 등장해서 문법에러가 나게 되므로 이를 방지하기 위해 WHERE를 조건을 먼저 주려고 1=1이라는 것을 넣어 준 것이다. 

 

728x90

댓글