book_SQL.xml 쿼리문 select_list 를 수정해서
검색 기능을 추가함
<!-- 목록 전체 출력하는 쿼리문 , 검색 기능 추가 -->
<select id="select_list" parameterType="hashMap"
resultType="hashMap">
<![CDATA[
SELECT book_id, title, category, price, insert_date
FROM book
WHERE 1=1
]]>
<if test="keyword != null and keyword != ''">
and (title like CONCAT('%',#{keyword},'%') or category like
CONCAT('%',#{keyword},'%'))
</if>
ORDER BY insert_date desc
</select>
order by 절 위에 추가된 코드는 아래와 같다. (where 절이므로 order by 이전에 들어간다)
WHERE 1=1
where 1 =1 은 관습적인 구문이다. 1 = 1은 늘 참이기 때문에 검색 조건을 무조건 and로 연결하기 위해 사용한다.
CONCAT = % 키워드 % CONCAT으로 합침
키워드가 있으면 , 타이틀이나 카테고리에 검색어가 있으면 다 검색
키워드가 없을 경우에는 그대로 나옴 ( 전체 )
BookController list 메소드도 수정이 필요하다.
//책 목록 보기 컨트롤러, 검색 기능 추가함
@GetMapping("/list")
public String list (@RequestParam Map<String, Object> map, Model model) {
List<Map<String, Object>> list = this.bookService.list(map);
model.addAttribute("data", list);//data라는 이름으로 전달(requset와 동일)
if(map.containsKey("keyword")) {
model.addAttribute("keyword", map.get("keyword"));
}
return"/book/list";
}
목록 페이지에는 keyword HTTP 파라미터가 있을 수도 있고, 없을 수도 있다. 따라서 파라미터가 있는 지 검사한다.
파라미터가 있다면 뷰에 keyword를 전달한다.
list.jsp에 검색창 넣어주기
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>책 목록</title>
</head>
<body>
<h1>책 목록</h1>
<!-- 검색창 -->
<div>
<form>
<input type="text" placeholder="검색" name="keyword" value="${keyword}" />
<input type="submit" value="검색" />
</form>
</div>
<!-- 검색창 종료-->
<table>
<thead>
<tr>
<td>제목</td>
<td>카테고리</td>
<td>가격</td>
</tr>
</thead>
<tbody>
<c:forEach var="row" items="${data}">
<tr>
<td><a href="/detail?bookId=${row.book_id}"> ${row.title}
</a></td>
<td>${row.category}</td>
<td><fmt:formatNumber type="number" maxFractionDigits="3"
value="${row.price}" /></td>
</tr>
</c:forEach>
</tbody>
</table>
<p>
<a href="/create">생성</a>
</p>
</body>
</html>
테스트(화면 출력)
https://blog.naver.com/drv982/222914802159
'BACKEND > Spring' 카테고리의 다른 글
DB 연결 - 유저 수정하기 및 삭제하기(UPDATE, DELETE) (0) | 2023.10.21 |
---|---|
DB 연결 - 유저 패키지 추가해서 유저 등록하기 및 상세조회하기(INSERT,SELECT) (0) | 2023.10.20 |
DB연결 - 책 목록 보기 (SELECT) (1) | 2023.10.20 |
DB연결 - 책 삭제하기 (DELETE) (0) | 2023.10.20 |
DB연결 - 책 수정 화면 (UPDATE) (0) | 2023.10.20 |