이상하게 mapper.xml에서 sql 쿼리가 정상적으로 작동을 안하는지 결과가 엉뚱하게 테이블 내의 모든 row를 리턴해서 보여주고 있는 것이었다. 그리고 에러 메시지도 안뜨고...

내가 원하는건 딱 keyword를 포함하고 있는 게시글들이었는디...

참으로 답답했는데 다시 검색 기능 구현하기를 검색해본 결과 아래와 같이 코드를 변경해주니 정상 작동하였다. (감격 ㅠㅜㅜ)

 

요약: 

like '%'||#{keyword}||'%'
부분을 ->
CONCAT ('%', #{keyword},'%')

문제였던 구역: (전)

<!-- sql code 조각 -->
	<!-- 반복되는 sql의 일부를 sql태그를 이용하여 따로 빼둘수 있다.
	검색 조건 sql -->
	<sql id="search">
		<choose>
			<!-- 검색옵션이 전체 검색일 경우 -->
			<when test="searchOption == 'all'">
				WHERE 
					writer like '%'||#{keyword}||'%'
				OR 
					content like '%'||#{keyword}||'%'
				OR 
					title like '%'||#{keyword}||'%'
			</when>
			<!-- 전체 검색이 아닐 경우 -->
			<otherwise>
				WHERE ${searchOption} like '%'||#{keyword}||'%'
			</otherwise>
		</choose>
	</sql>

 

문제였던 구역: (후)

<sql id="search">
		<choose>
			<!-- 검색옵션이 전체 검색일 경우 -->
			<when test="searchOption == 'all'">
				WHERE 
					writer like CONCAT ('%', #{keyword},'%')
				OR 
					content like CONCAT ('%', #{keyword},'%')
				OR 
					title like CONCAT ('%', #{keyword},'%')
			</when>
			<!-- 전체 검색이 아닐 경우 -->
			<otherwise>
				WHERE ${searchOption} like CONCAT ('%', #{keyword},'%')
			</otherwise>
		</choose>
	</sql>

board-mapper.xml 전체 코드

<mapper> 태그 안에 아래 코드: 

<!-- 01. 게시글 전체 목록 조회 및 검색조회까지 -->
	<select id="listAll" resultType="board">
			SELECT*FROM
				LF_Product_Test
			<!-- 검색조건 -->
			<include refid="search"></include>
			ORDER BY seq
		<!-- 페이징 -->
		<!-- <include refid="pagingFooter"></include>	 -->
	</select>
	<!-- 02_02. 게시글 레코드 갯수 -->
	<select id="countArticle" resultType="int">
		SELECT COUNT(*) FROM LF_Product_Test
		<!-- WHERE절을 include 태그로 삽입 -->
		<include refid="search"></include>
	</select>
	<!-- sql code 조각 -->
	<!-- 반복되는 sql의 일부를 sql태그를 이용하여 따로 빼둘수 있다.
	검색 조건 sql -->
	<sql id="search">
		<choose>
			<!-- 검색옵션이 전체 검색일 경우 -->
			<when test="searchOption == 'all'">
				WHERE 
					writer like CONCAT ('%', #{keyword},'%')
				OR 
					content like CONCAT ('%', #{keyword},'%')
				OR 
					title like CONCAT ('%', #{keyword},'%')
			</when>
			<!-- 전체 검색이 아닐 경우 -->
			<!-- 따옴표 넣어줬는데 맞나...? -->
			<otherwise>
				WHERE ${searchOption} like CONCAT ('%', #{keyword},'%')
			</otherwise>
		</choose>
	</sql>

+ Recent posts