기록
JAVA sping BOOK 테이블 list 띄우기 본문
book/list.jsp
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="/resources/js/jquery-3.6.0.js"></script>
<title>도서관리시스템</title>
</head>
<body>
<!-- 검색 시작 -->
<p>
<!-- action 속성 및 그 값이 생략시, 현재 URI(/list)를 재요청
method는 GET(form태그의 기본 HTTP 메소드는 GET임) -->
<form>
<!-- /list?keyword=개똥이 -->
<input type="text" name="keyword" value=""
placeholder="검색어를 입력하세요" />
<input type="submit" value="검색" />
</form>
</p>
<%-- ${data} --%>
<table border="1">
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>카테고리</th>
<th>가격</th>
</tr>
</thead>
<tbody>
<c:forEach var="bookVO" items="${data}" varStatus="stat">
<!--
bookVO[rnum=1, bookId=32, title=제목30, category=카테고리30, price=10000,
insertDate=Wed Jan 25 11:44:40 KST 2023, content=내용30]
forEach태그? 배열(String[][], int[][]), Collection(List, Set) 또는
Map(HashTable, HashMap, SortedMap)에 저장되어 있는 값들을
순차적으로 처리할 때 사용함. 자바의 for, do~while을 대신하여 사용
data : mav.addObject("data",bookVOList)
data : List<BookVO>
var : 변수(variable)
items : 아이템(배열, Collection, Map)
varStatus : 루프 정보를 담은 객체
- index : 루프(반복) 실행 시 현재 인덱스(0부터 시작)
- count : 실행 회수(1부터 시작, 보통 행번호를 출력)
-->
<tr>
<td>${bookVO.rnum}</td>
<td><a href="detail?bookId=${bookVO.bookId}">${bookVO.title}</a></td>
<td>${bookVO.category}</td>
<td><fmt:formatNumber type="number" maxFractionDigits="3" value="${bookVO.price}"/></td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
컨트롤러(+검색포함)
// 1) 요청 URI : /list
// 요청 파라미터 : {}
// 2) 요청 URI : /list?keyword=핑구
// 요청 파라미터 : {"keyword" : "핑구"}
// 방식 : get
// 스프링에서 요청 파라미터를 매개변수로 받을 수 있음
@RequestMapping(value="/list", method=RequestMethod.GET)
public ModelAndView list(ModelAndView mav,
@RequestParam(value="keyword",required = false) String keyword) {
List<BookVO> bookVOList = this.bookService.list(keyword);
log.info("keyword : " + keyword);
log.info("bookVOList : " + bookVOList.toString());
// 데이터
mav.addObject("data", bookVOList);
// jsp(뷰) : book폴더에 있는 list.jsp를 forwarding(jsp를 해석, 컴파일하여 html로 리턴)
mav.setViewName("book/list");
return mav;
}
서비스
@Override
public List<BookVO> list(String keyword){
return bookDao.list(keyword);
}
DAO
//책 목록
//리턴타입 : List<BookVO>
public List<BookVO> list(String keyword){
//.selectOne() : 1행(상세보기)
//.selectList() : 여러행(목록)
return this.sqlSessionTemplate.selectList("book.list",keyword);
}
mapper
<!-- 책 목록
parameterType : String keyword
where 1 = 1은 늘 참임
조건이 2개 이상일때 where + and
조건이 1개일때 where이어야함
-->
<select id="list" parameterType="String" resultType="bookVO">
WITH T AS(
SELECT ROW_NUMBER() OVER(ORDER BY BOOK_ID DESC) RNUM
, ROWNUM NUM1
, BOOK_ID, TITLE, CATEGORY, PRICE, INSERT_DATE, CONTENT
FROM BOOK
WHERE 1 = 1
<if test="keyword!=null and keyword!=''">
AND(
TITLE LIKE '%' || #{keyword} || '%'
OR CATEGORY LIKE '%' || #{keyword} || '%'
OR CONTENT LIKE '%' || #{keyword} || '%'
)
</if>
)
SELECT T.RNUM, T.BOOK_ID, T.TITLE, T.CATEGORY, T.PRICE
, T.INSERT_DATE, T.CONTENT
FROM T
</select>
'JAVA' 카테고리의 다른 글
JAVA Spring MAPPER 인터페이스 설정 (0) | 2023.02.06 |
---|---|
다음 카카오 주소검색 추가 (0) | 2023.02.03 |
JAVA sping BOOK 테이블 Create (0) | 2023.01.31 |
JAVA Spring 파일 업로드 예제 +미리보기 (0) | 2023.01.30 |
JAVA Spring 파일업로드 설정 및 업로드하기 (0) | 2023.01.27 |
Comments