티스토리 뷰

웹개발을 해본 개발자라면 게시판을 한번이상은 개발해보았을 것이다.
게시판을 개발하면서 각 게시글의 기본적인 데이터 및 게시글의 순번을 화면에 보여주게 되는데
이때 게시글의 순번은 각 게시글을 대표하는 번호인 DB 테이블에 INT타입의 PK값(sequence, auto_increment로 처리된 값) 을 주로 보여주게된다.

 

하지만 PK값이 숫자가 아닌 다른값이라던가 혹은 고객사의 요청으로 No값을 DB에있는 값이 아닌 순수 게시글의 순번을 보여달라는 요구사항이 들어올 수 있다. 실제로 필자는 이러한 요구사항을 받은적이 있다.
긴 말보단 바로 예제코드와 함께 살펴보도록 하자.

개발환경

Java 11
Spring Boot 2.3.5
Mybatis
Thymeleaf

데이터 준비

게시판 테이블을 만들어서 페이징을 위해 100개의 데이터를 넣었다.

페이징 객체 생성

페이지를 이동해도 순번이 잘 나오는지 테스트하기위해 페이징 클래스를 생성하였다.

JAVA 코드 및 XML 쿼리작성

 

 

페이징 처리를 하기위해 게시글의 총 갯수와, 게시글 목록을 조회하자.

화면에 게시글 목록보이기

화면에는 정상적으로 페이징처리가 되있는 게시글목록을 10개씩 끊어와 보여주였다.
이때 No값은 게시글의 순수 넘버링이 아닌 DB에 있는 PK값

을 보여주었다.

순번으로 변경

페이지를 2,3,4 1페이지씩 넘어갈때마다 순번이 정상적으로 나오는지 확인되었다.



위 HTML파일의 17, 18 Line의 코드를 위의 사진과 변경하였다. 이제 순번을 구하는 공식을 알아보자.

총갯수 - ( ((현재페이지 - 1) * 화면당 게시글 로우행 수) + 로우인덱스)

여기서 로우인덱스란 for문으로 list에 있는 데이터를 하나씩 꺼내올때의 인덱스번호를 말한다.
JSP로 게시판을 만들때 JSTL의 c:forEach 태그를 써본적이 있었을것이다. 그때 varStatus속성으로
로우인덱스, 로우카운트를 알 수 있듯이 Thymeleaf에서도 이런값들을 가져올 수 있는 문법을 지원한다.

 

현재페이지에 - 1을 하는 이유는 게시글의 총 갯수의 값을 화면 1페이지 최상단 No값에 세팅하기 위함이다.
만일 - 1을 하지않게되면 게시글의 총 갯수 - 화면당 게시글 로우행 수 = 값이 1페이지 최상단 No값에 위치하게된다.
간단한 예를 들어보자.

 

총갯수 = 100, 현재 페이지 = 2, 화면당 게시글 로우행 수 = 5

-1을 했을 경우

-1을 하지않을 경우

정상적으로 테스트가 완료되었다.
많은이들에게 도움이 되었으면 좋겠다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함