본문 바로가기

spring/게시판 만들기

[spring/mybatis] 게시판 조건검색

게시판 제목, 내용을 검색하는 기능을 만들었다. 

조건검색은 jsp에 name넣는거랑 쿼리문만 잘 짜면 쉽게 만들 수 있다. 

 

communityFrm.jsp

검색 조건을 처리하려면 입력하는 곳에 name="keyword"를 넣어줘야한다.

 

<div class="MateSearch">
	<form style="position:relative;" action="/mateSearch.do" method="post">
		<div class="form-check" style="padding-left:0px;">
        	<img class="searchsty" src="/resources/img/icon/search1.png">
       		<p class="searchfs">조건검색</p>
        </div>
        	<input type="text" class="form-control me-sm-2" name="keyword" placeholder="제목 또는 내용을 검색해주세요" style="width: 350px; margin-top: 5px;"> 
        	<input type="submit" id="Msearch" style="display: none;"></input> 
        <label for="Msearch"> 
        	<img src="/resources/img/icon/search2.png" class="searchIm">
        </label>
    </form>
</div>

 

BoardController

검색조건은 ArrayList로 Board정보 + 검색 조건까지 가져와야 하는데 쿼리문만 잘 짜면 된다!!!!!!

 

    //게시판 검색
    @RequestMapping(value="/mateSearch.do")
	public String mateSearch(String keyword, Model model) {
		ArrayList<Board> list = service.mateSearch(keyword);
		model.addAttribute("list",list);
		return "board/communityFrm";
	}

 

BoardService

 

	//게시판 검색
	public ArrayList<Board> mateSearch(String keyword) {
		ArrayList<Board> list = dao.mateSearch(keyword);
		return list;
	}

 

BoardDao

 

	//게시판 검색
	public ArrayList<Board> mateSearch(String keyword) {
		List<Board> list = sqlSession.selectList("board.mateSearch",keyword);
		return (ArrayList<Board>)list;
	}

 

boardSQL.xml

 

<참고>

LIKE절이란? 특정 문자 또는 문자열을 포함하고 싶은 값을 검색할 때 사용한다. 

% : 임의의 문자나 문자열, 또는 빈 문자열에 사용

_  : 임의의 문자 한개만 사용

 

SELECT * FROM [테이블명] WHERE [컬럼명] like %문자열%;

※ MYSQL은 대소문자를 구분하지 않으나, ORACLE은 대소문자 구문하니 주의!!!

 

	<!-- 조건검색 -->
	<select id="mateSearch" parameterType="String" resultType="b">
		select 
			BOARD_NO as boardNo,
			BOARD_WRITER as boardWriter,
			BOARD_TITLE as boardTitle,
			BOARD_CONTENT as boardContent,
			READ_COUNT as readCount,
			REG_DATE as regDate,
			FILEPATH,
			PROFILE_OPTION as profileOption,
			STATUS,
			(select member_filepath from member where member_id=board_writer)as fileImg
	      from board where (board_title like '%' ||  #{keyword} || '%' or board_content like '%' ||  #{keyword} || '%') order by regDate desc
	</select>
반응형