게시판 목록 페이지
총 글 개수가 38개이므로 마지막 페이지에는 3개의 글만 있어야하지만, 현재 5개가 뜬다.
남은 글 개수를 계산해서 겹치지 않고 마지막 페이지에 남아있는 글이 뜨도록 기능을 수정해보자. PageVO의 setTotalData에서 계산하자.
public void setTotalData(int totalData) {
this.totalData = totalData;
// 총 페이지 수 계산하기
totalPage = (int)Math.ceil((double)totalData/dataPerPage);
// 마지막 페이지에 남아있는 데이터 수
lastPageData = totalData%dataPerPage;
if(lastPageData==0) lastPageData = dataPerPage;
}
public int getLastPageData() {
return lastPageData;
}
public void setLastPageData(int lastPageData) {
this.lastPageData = lastPageData;
}
boardMapper.xml에서 쿼리문에 조건문을 생성할 것이다.
<choose><when><otherwise>태그를 이용해서 조건에 따라서 실행할 쿼리문을 다르게 설정할 수 있다.
<select id="boardList" resultType="com.poby.myapp.vo.BoardVO">
<![CDATA[
SELECT * FROM
(SELECT * FROM
(SELECT postno, subject, username, hitcount, to_char(regdate, 'mm-dd hh:mi') regdate
FROM board_tbl ORDER BY postno DESC)
WHERE rownum<=${nowPage}*${dataPerPage} ORDER BY postno ASC)
<choose>
<when test="totalPage!=nowPage">
WHERE rownum<=${dataPerPage} ORDER BY postno DESC
</when>
<otherwise>
WHERE rownum<=${lastPageData} ORDER BY postno DESC
</otherwise>
</choose>
]]>
</select>
※ 500에러 BadSqlGrammarException
위 sql문으로 실행했을때, CDATA의 잘못된 사용으로 sql문법에 예외가 발생했다.
새로 추가한 <choose>는 태그이기 때문에, CDATA안에서 사용하게되면 제기능을 못하게된다.
쿼리문 전체를 CDATA로 감싸주기보다, 부등호에서만 CDATA를 사용하도록 하자.
<select id="boardList" resultType="com.poby.myapp.vo.BoardVO">
SELECT * FROM
(SELECT * FROM
(SELECT postno, subject, username, hitcount, to_char(regdate, 'mm-dd hh:mi') regdate
FROM board_tbl ORDER BY postno DESC)
WHERE rownum<![CDATA[<=]]>${nowPage}*${dataPerPage} ORDER BY postno ASC)
<choose>
<when test="totalPage!=nowPage">
WHERE rownum<![CDATA[<=]]>${dataPerPage} ORDER BY postno DESC
</when>
<otherwise>
WHERE rownum<![CDATA[<=]]>${lastPageData} ORDER BY postno DESC
</otherwise>
</choose>
</select>
총 글 수가 38이므로, 맨 마지막 페이지인 8번 페이지엔 3개에 글만 표시된다.
'Spring' 카테고리의 다른 글
12.15.(목) Spring Framework(24): 게시판 기능(9) (0) | 2022.12.17 |
---|---|
12.15.(목) Spring Framework(23): 게시판 기능(8) (0) | 2022.12.17 |
12.14.(수) Spring Framework(21): 게시판 기능(6) (2) | 2022.12.17 |
12.14.(수) Spring Framework(20): 게시판 기능(5) (0) | 2022.12.17 |
12.14.(수) Spring Framework(19): 게시판 기능(4) (0) | 2022.12.17 |