MyBatis 마이바티스에서 LIKE문 사용하기

반응형

LIKE문은 일치하는 문자열을 찾기 위해 사용되는문법입니다. 

SQL에서 LIKE문을 사용하는 방법은 다음과 같습니다. 

SELECT *
FROM board
WHERE title LIKE '%test%'

하지만 MyBatis에서 LIKE 문을 사용하기 위해서는 약간 다른 형태로 사용되며, ORACLE인지, MySQL인지에 따라서도 약간의 차이가 있습니다.

 


ORACLE

SELECT *
FROM board
WHERE title LIKE '%'||#{searchTitle}||'%'

MySQL (MariaDB)

SELECT *
FROM board
WHERE title LIKE CONCAT('%',#{searchTitle},'%')

Ms-SQL

SELECT *
FROM board
WHERE title LIKE '%'+#{searchTitle}+'%'

MyBatis, MariaDB에서 Like문을 사용하는 예제

	<select id="getBoardTotalCnt" parameterType = "java.util.HashMap" resultType="int">
		SELECT COUNT(*)
		FROM board
		WHERE <if test="searchType=='title'.toString()">title LIKE '%'||#{searchWord}||'%'</if>
			  <if test="searchType=='writer'.toString()">writer LIKE '%'||#{searchWord}||'%'</if>
			  <if test="searchType=='content'.toString()">content LIKE '%'||#{searchWord}||'%'</if>
			  <if test="searchType=='tc'.toString()">title LIKE '%'||#{searchWord}||'%' OR content LIKE '%'||#{searchWord}||'%'</if>
			  <if test="searchType==''.toString()">1=1</if>
	</select>
반응형