Back-End/Spring
[Spring] Mybatis와 스프링 페이징 처리
윤고랭이
2021. 7. 28. 23:48
페이징 처리때 쓸 클래스 'Criteria'
전체목록을 페이지 별로 나눠서 보여줄려면, Criteria를 생성해야한다.
즉, 검색에 사용되는 여러 종류의 데이터를 하나의 객체로 묶기 위한 용도
@Getter
@Setter
@ToString
public class Criteria {
private int pageNum;
private int amount;
public Criteria() {
this(1,10);
}
public Criteria(int pageNum, int amount) {
this.pageNum = pageNum;
this.amount = amount;
}
}
그리고 페이징을 할때는 조금의 산수가 필요하다...ㅠ
private int curPage; // 현재 페이지 번호
private int rowSizePerPage; // 한 페이지당 레코드 수
private int totalPageCount; // 총 페이지 건수
private int pageSize; // 페이지 리스트에서 보여줄 페이지 갯수
// --내부에서 계산 (getter) 왜? 사용자로부터 받는게 없기 때
private int startRow ; // 시작 레크드 번호
private int endRow; // 마지막 레크드 번호
private int totalRowCount ; // 총 레코드 건수
private int startPage; // 페이지 리스트에서 시작 페이지 번호
private int endPage; // 페이지 리스트에서 마지막 페이지 번호
/*
* 입력 받은 변수를 기반으로
* 페이징 관련 변수 계산
*/
public void setting() {
if(rowSizePerPage < 1) rowSizePerPage = 10;
if(curPage < 1) curPage = 1;
if(pageSize < 1) pageSize = 10;
//totalPageCount = (int)Math.ceil(totalRowCount /rowSizePerPage); //현재 33이 되야 함
totalPageCount = (totalRowCount - 1) / rowSizePerPage + 1; //현재 33이 되야 함
System.out.println("totalPageCount = " +totalPageCount);
startRow = (curPage -1) * rowSizePerPage + 1;
//curPage * rowSizePerPage
endRow = startRow + rowSizePerPage - 1 ; // curPage + rowSizePerPage
System.out.println("curPage = " +curPage);
System.out.println("pageSize = " +pageSize);
startPage = (curPage -1) /pageSize * pageSize + 1; //11
endPage = startPage + pageSize - 1 ; //15
if(endPage > totalPageCount) endPage = totalPageCount;
}
<페이징 계산을 적은 것>
<JSP 화면 번호 출력>
<div class='pull-right'>
<ul class="pagination">
<c:if test="${pageMaker.prev}">
<li class="paginate_button previous"><a href="#">Previous</a>
</li>
</c:if>
<c:forEach var="num" begin="${pageMaker.startPage}"
end="${pageMaker.endPage}">
<li class="paginate_button"><a href="#">${num}</a></li>
</c:forEach>
<c:if test="${pageMaker.next}">
<li class="paginate_button next"><a href="#">Next</a></li>
</c:if>
</ul>
</div>
<!-- end Pagination -->
</div>
<수정/삭제 후 이동>
@PostMapping("/remove")
public String remove(@RequestParam("bno") Long bno, @ModelAttribute("cri") Criteria cri, RedirectAttributes rttr) {
log.info("remove..." + bno);
if (service.remove(bno)) {
rttr.addFlashAttribute("result", "success");
}
rttr.addAttribute("pageNum", cri.getPageNum());
rttr.addAttribute("amount", cri.getAmount());
return "redirect:/board/list";
}
제목 클릭 후 상세보기 그리고 수정페이지