본문 바로가기
Database

[Mybatis] select 문에 String 검색어 추가하기

by 서피 2021. 5. 2.

아래와 같이 parameter로 searchKeyword를 넣어주며 시도했는데, searchKeyword에 아무값도 들어가지 않은 듯 모든 컬럼을 select하는 문제가 발생했다.

<select id="selectListByKeyword" parameterType="String" resultMap="companyResultMap">
	SELECT CO_URL, CO_NAME, CO_INTRODUCE, MB_NAME, MB_ADDRESS1, MB_ADDRESS2
			FROM COMPANY C JOIN
			MEMBER M ON C.MB_NO = M.MB_NO 
			WHERE (C.CO_URL LIKE '%' || #{searchKeyword} || '%') OR (C.CO_NAME LIKE '%' || #{searchKeyword} || '%')
</select>

오류도 없이 전체를 select하며 잘 동작하는 중

 

문제의 원인은 || 이었다.

<select id="selectListByKeyword" parameterType="String" resultMap="companyResultMap">
	SELECT CO_URL, CO_NAME, CO_INTRODUCE, MB_NAME, MB_ADDRESS1, MB_ADDRESS2
			FROM COMPANY C JOIN
			MEMBER M ON C.MB_NO = M.MB_NO 
			WHERE (C.CO_URL LIKE '%' #{searchKeyword} '%') OR (C.CO_NAME LIKE '%' #{searchKeyword} '%')
</select>

와일드카드를 사용할 때 || 를 넣어주지 않아도 잘 동작한다.

 

문제 해결에 참고한 stackoverflow 링크

stackoverflow.com/questions/7491291/how-can-i-use-like-in-sql-queries-with-mybatis-safely-and-db-agnostic

 

댓글