본문 바로가기

Springboot

페이징

TOTALCOUNT : 총 글의 개수

TOTALPAGE : 총 페이지 수(10개 단위)

CURRENTPAGE : 현재 페이지

FIRST : 첫페이지

LAST : 마지막 페이지

 

 

decode(currentPage,0,1,0) first 

currentPage가 0이면 1(true)반환, 0이 아니면 0(false)반환

decode(currentPage, totalPage-1,1,0)last

currentPage가 totalPage-1이랑 같으면 1(true)반환, 0이 아니면 0(false)반환

 

작성한 쿼리문을 boards.xml에 복사해준다.

pagingDto로가서 변수를 변경해준다.

boards.xml

 

boolean은 변수작성할때 변수명앞에 is를 붙여진다.

템플릿엔진에서는 last,first로 작성하면 찾아진다.

(getter가 만들어지면 islast(),islast()으로 만들어짐 ->el에서는 last,last로 찾는다.)

 

페이징 메서드를 하나 만들어준다. 

금방만든 쿼리를 실행해주는 메서드이다.

paging을 실행해서 model에 담아서 page로 갈것이다.

boards.Dao

 

 

currentPage는 고정된 값이 아니기때문에

변수값을 지정해준다.

boards.xml

 

 

findAll에서 전체데이터(boardsList)가 넘어올때 startNum이 넘어오니까 내가 원하는 것만 가지고온다.

1을 가지고오면 1의 10개, 2를 가지고 오면 2의 10개, 3을 가지고 오면 3의 열개

 

boardsDao.paging에서 page를 넘겨서 PagingDto를 받았다. 

 

model에 키값이 boardsList,paging이 담긴다.

boardsController

 

 

 

순서대로 첫페이지, 두번째 페이지, 마지막 페이지

 

 

 

아래박스의 코드가없다면  bootstrap이 적용되지 않는다.

-> 화면의 디자인들이 다깨진다.

header.jsp

 

 

페이징 버튼 

w3school에서 원하는 디자인예제를 복사해서 mainjsp에 붙여넣어준다.

 

 

가지고온 디자인예제를 게시판 버튼에 맞게 수정을 해주었다.

1,2,3페이지를 누르면 각자의 페이지가 나온다.

 

삼항연산자를 사용하여 first,last가 true이면 disabled이 실행되고 false이면  "" 이 실행한다.

 

 

한페이지에 게시글을 3개만 보여줄거기때문에 바꾸어준다.

boards.xml

 

 

currentBlock 현재 Block의 수  ex) 1~5 는 1 ,  6~10 는 2, 11~15 는 3

blockCount   고정된 값. 한페이지에 페이지 넘버 개수 5 

startPageNum 페이지시작 숫자 1 -> 6 -> 11 ,,,

lastPageNum  페이지마지막 숫자  5 -> 10 -> 15,,

paging.Dto

 

 

한페이지에 게시글 3개씩 보여줄것이기 때문에 3으로 바꾸어준다.

blockCount는 바뀌지 않는 고정값이여서 5로 지정한다.

 

BoardsController

만약 전체페이지가 마지막페이지 숫자보다 적다면

마지막 숫자는 10이 아니라 전체 페이지까지 나오게한다.

 

마지막으로 main.jsp변경

main.jsp

 

 

마지막 결과물