Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- cubrid
- shortcuts
- 사진
- IntelliJ
- join
- 하이버네이트
- 파이어폭스41
- 위경도계
- 자바
- 단축키
- 쿼리
- 엽서
- mybatis
- Java
- JPA
- Query
- 캘리그라피
- mybatis polygon mapper
- JSON 변환
- 큐브리드
- json parser
- mybatis polygon
- spring
- QGIS
- 여행
- 좌표변환
- mysql gis
- 좌표계변환
- mysql polygon
- Hibernate
Archives
- Today
- Total
쏘댕
MyBatis LIKE 검색 본문
MyBatis 에서 sql xml 파일에 쿼리 작성 시 LIKE 검색 팁
MyBatis에서 parameterClass의 속성을 SQL에 바인딩 할 때 syntax를 #{속성명} 으로 쓴다.
여기서 LIKE를 쓰려고
SELECT *
FROM user
WHERE user_id LIKE '%#{test_game_id}%'
이렇게 하면,
SELECT * FROM user WHERE user_id LIKE '%'test_game_id'%'
요렇게 쿼리가 가서 SQLException 발생!!
바인딩 될 때 MyBatis에서 따옴표를 붙여서 넘어오기 때문이라고 한다.
다음은 해결방법!
RDBMS에 제공하는 Built-In 함수를 사용하는 방법이 있다는데,
for Oracle: WHERE GAME_ID LIKE '%' || #{gameId} || '%'
for MySQL : WHERE GAME_ID LIKE CONCAT('%', #{gameId}, '%')
하지만 RDBMS 상관없이 LIKE를 실행하는 훨 간단한 것도 있대서 요걸썼다.
WHERE GAME_ID LIKE '%${gameId}%'
MyBatis 뿐만 아니라 iBatis에서도 따옴표를 감싸지 않고 값을 Direct하게 받는 syntax는 ${속성명} 이다.
참고 :
'공부 > Java' 카테고리의 다른 글
개인정보 마스킹처리 (휴대폰번호, 이메일) (0) | 2015.07.20 |
---|---|
[웹 시큐어 코딩] owasp-java-html-sanitizer 적용 (0) | 2015.07.10 |
[MyBatis] 두테이블 정보를 한개의 모델로! Join 쿼리로 받기 (0) | 2015.01.09 |
Spring MVC Interceptors Example – HandlerInterceptor and HandlerInterceptorAdapter (0) | 2014.11.13 |
[MyBatis] resultMap collection (2) | 2014.07.10 |
Comments