★ PART · BOARD

페이징 게시판

Spring 기초
SMHRD

학습 목표

1. 문제

글이 100 개가 되면 화면이 망가진다. 한 페이지에 다 보여줄 수 없음.

2. 새 도구

LIMIT 시작행, 개수: MySQL 페이징. 스키마 변경 없이 SQL 만 추가. Paging 보조 클래스 (도메인 아님) 로 화면 계산.

3. 코드

<!-- BoardMapper.xml — 스키마 변경 없음, SQL 추가 --> <select id="selectListPaging" parameterType="map" resultType="com.smhrd.domain.Board"> SELECT num, title, writer, content, created_at FROM myboard ORDER BY num DESC LIMIT #{startRow}, #{pageSize} </select> <select id="count" resultType="int"> SELECT COUNT(*) FROM myboard </select> // com.smhrd.domain.Paging — 보조 클래스 (도메인 아님) public class Paging { private int pageNo, pageSize, totalCount; public Paging(int pageNo, int pageSize, int totalCount) { this.pageNo = pageNo < 1 ? 1 : pageNo; this.pageSize = pageSize; this.totalCount = totalCount; } public int getStartRow() { return (pageNo - 1) * pageSize; } public int getTotalPages() { return (int) Math.ceil((double) totalCount / pageSize); } } // BoardService public List<Board> selectListPaging(Paging paging) { Map<String, Integer> param = new HashMap<>(); param.put("startRow", paging.getStartRow()); param.put("pageSize", paging.getPageSize()); return mapper.selectListPaging(param); } <!-- list.jsp 의 페이지 번호 --> <c:forEach begin="1" end="${paging.totalPages}" var="p"> <a href="?page=${p}">${p}</a> </c:forEach>

4. 정리

5. Before / After

전 차시

글이 100 개가 되면 화면이 망가진다. 한 페이지에 다 보여줄 수 없음.

이번 차시

페이징의 SQL 패턴과 화면 구현을 안다. v7.

학습 확인 체크리스트