전체 데이터 조회 vs 10개 데이터 속도 차이
<select id="listAll" resultType="BoardVO">
select bno,title, content,writer,regdate,viewcnt
from tbl_board
order by bno desc, regdate desc
</select>
<select id="listPage" resultType="BoardVO">
select bno,title, content,writer,regdate,viewcnt
from (select bno,title, content,writer,regdate,viewcnt, rownum rn
from (select bno,title,content,writer,regdate,viewcnt
from tbl_board order by bno desc))
where rn between 11 and 20
</select>
Oracle vs MySQL
MySQL
<select id="listPage" resultType="BoardVO">
select bno,title, content,writer,regdate,viewcnt
from tbl_board
order by bno desc, regdate desc
limit 0, 10
</select>
limit 0, 10 → 0:skip수 10:length 글번호:100~91
limit 10,10 → 10:skip수 10:length 글번호:90~81
Oracle
<select id="listPage2" resultType="BoardVO">
select bno,title, content,writer,regdate,viewcnt
from tbl_board
order by bno desc
</select>
BoardImpl.java에서
스킵할 행수와 조회할 최대행수에 페이지 클릭시 자동으로 값을 넣어줄 수 없을까?
Criteria.java를 만들어서 URL에 직접 파라미터로 값을 써줘서 넘겨주기
<Controller>
<listCri.jsp>
눈을 씻고 봐도 Criteria.java 안에 들어갈 page와 perPageNum은 볼 수 없다 그러면 어떻게 값을 전달할까??
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="<http://java.sun.com/jsp/jstl/core>" prefix="c"%>
<%@ taglib prefix="fmt" uri="<http://java.sun.com/jsp/jstl/fmt>"%>
<%@ page session="false"%>
<%@include file="../include/header.jsp"%>
<!-- Main content -->
<section class="content">
<div class="row">
<!-- left column -->
<div class="col-md-12">
<!-- general form elements -->
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">LIST ALL PAGE</h3>
</div>
<div class="box-body">
<table class="table table-bordered">
<tr>
<th style="width: 10px">BNO</th>
<th>TITLE</th>
<th>WRITER</th>
<th>REGDATE</th>
<th style="width: 40px">VIEWCNT</th>
</tr>
<c:forEach items="${list}" var="boardVO">
<tr>
<td>${boardVO.bno}</td>
<td><a href='/board/read?bno=${boardVO.bno}'>${boardVO.title}</a></td>
<td>${boardVO.writer}</td>
<td><fmt:formatDate pattern="yyyy-MM-dd HH:mm"
value="${boardVO.regdate}" /></td>
<td><span class="badge bg-red">${boardVO.viewcnt }</span></td>
</tr>
</c:forEach>
</table>
</div>
<!-- /.box-body -->
<div class="box-footer">Footer</div>
<!-- /.box-footer-->
</div>
</div>
<!--/.col (left) -->
</div>
<!-- /.row -->
</section>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
<script>
var result = '${msg}';
if(result == 'SUCCESS'){
alert("처리가 완료되었습니다.");
}
</script>
<%@include file="../include/footer.jsp"%>
<Criteria.java>
public class Criteria {
private int page;
private int perPageNum;
public Criteria() {
this.page=1;
this.perPageNum= 10;
}
public void setPage(int page) {
if(page<=0) {
this.page=1;
return;
}
this.page=page;
}
public void setPerPageNum(int perPageNum) {
if(perPageNum<=0 || perPageNum>100) {
this.perPageNum=10;
return;
}
this.perPageNum=perPageNum;
}
public int getPage() {
return page;
}
public int getPageStart() {
return (this.page-1)*perPageNum;
}
public int getPerPageNum() {
return this.perPageNum;
}
@Override
public String toString() {
return "Criteria [page=" + page + ", perPageNum=" + perPageNum + "]";
}
}
값 전달 방법
URL에 직접 입력해준다 좀 더 확대한 사진을 보면 ?page=1&perPageNum=5를 직접 써줬다.
다음 포스팅에는
실제 데이터 수에 맞춰서 페이지를 생성
해당 번호에 맞는 데이터를 불러오기
글의 제목 클릭시 해당 값을 조회
Go List 버튼을 눌렀을 때 해당 페이지가 나오도록 해볼게요
'Spring' 카테고리의 다른 글
"내가 원하는대로 페이징 구현할 수 있을까?" -2 (1) | 2018.09.03 |
---|---|
"Spring에서는 어떻게 예외처리 하죠?" (0) | 2018.09.03 |
"Spring 프로젝트 모든 설정 한 번에 그림으로 끝내기2" (0) | 2018.08.30 |
"Spring 프로젝트 모든 설정 한 번에 그림으로 끝내기" (0) | 2018.08.30 |
"Spring+MyBatis 프로젝트 만들 수 있을까?" (0) | 2018.08.29 |