게시판 페이징과 인덱스 수정 (1)
게시물을 삭제 후 새 게시물을 등록하면 두번째 게시물인데도 불구하고 인덱스가 5라고 나온다
이는 내가 db테이블 만들때 인덱스를 primary key로 설정해주었기 때문임
보통 그냥 페이지의 인덱스를 보여주려면 index를 별도로 줘서 순번을 매기는 방법을 쓴다고 한다
인덱스는 쿼리에서 내가 직접 뽑아서 사용해도 되는데,
요새는 그리드 툴 같은 곳에서 페이징처리와 함께 인덱스를 기본적으로 제공해주기도 한다
목록쿼리 좀 추가개선하여 페이징 처리까지 적용해보기로 했다.
그러기 위해선 pk가 아니라 목록의 순번인 인덱스를 만들어서 사용해야한다.
페이징 처리할 때 필요한 파라미터가 뭐가 있을까 고민해보자
https://yulfsong.tistory.com/59
[스프링 부트 게시판] 게시판 리스트 페이징 처리
게시판 리스트 페이징 처리 게시판을 만들면 단순히 리스트로 끝까지 보여주고 무제한 스크롤이 되는 것이 아니라, 보기 좋게 목록을 구성해주어야 한다. 이를 페이징 처리라고 부른다. 초반엔
yulfsong.tistory.com
티스토리의 url을 보고 느낀건데, 아무래도 페이지 넘버를 파라미터로 넘겨줘야하지 않을까 싶었다
BoardMapper.xml 의 게시물 목록 조회부분 sql 코드이다
mysql은 limit함수를 지원하는데
LIMIT (시작점), (개수) 이다
무슨 인덱스부터 넘겨줄지는 파라미터로 넘기고, 개수는 10개씩 보여준다 치고 10을 넣었음.
<!-- 게시물 목록 -->
<select id="boardList" parameterType="int" resultType="com.example.board.BoardDTO">
SELECT
idx AS pIdx, title, writer, regdate
FROM
board_table
ORDER BY idx DESC
LIMIT #{pageStart}, 10
</select>
그리고 다른 패키지 내 파일들의 BoardList 메소드들 전부 파라미터 추가해줌
postman으로 띄워보면
요렇게 나오는데 정말 보기가 너무 드러워서
백엔드 구현에 집중하느라 잠시 미뤄뒀던 jsp파일을 이젠 수정해야 할 때가 온 듯
BoardList.jsp 파일을 수정
<div class="container">
<table class="table">
<colgroup>
<col width="15%"/>
<col width="40%"/>
<col width="25%"/>
<col width="30%"/>
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">제목</th>
<th scope="col">작성자</th>
<th scope="col">등록일</th>
</tr>
</thead>
<tbody>
<c:forEach var="l" items="${list }">
<tr>
<td>${l.pIdx}</td>
<td>${l.title}</td>
<td>${l.writer}</td>
<td><fmt:formatDate value="${l.regdate}" pattern="yyyy-MM-dd"/></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
tbody의 c태그가 tr태그 안에 있었는데 이를 밖으로 빼주었다.