본문 바로가기

BACK

[JPA] JPA 페이징 처리 하기 (타임리프 기반)

728x90


<"로직">
총 페이지 버튼이 화면에 10개씩 보이게 하고,
10이거나 10을 넘어갈 경우 다음 버튼이 생기며,
10을 넘어갈 경우 이전버튼이 생겨 각각의 화면의 페이지 첫번째 버튼으로 이동 하기


1. @PageableDefaualt

 

@PageableDefaualt(sort={"id"}, size=10, direction=Sort.Direction.ASC
 - sort={"id"} : 해당 id를 기준으로
  - size=10 : 한 화면에 10개 정보씩
  - direction=Sort.Direction.ASC : 오름차순(내림차순) 정렬
 

2. Controller


 - (@PageableDefault(sort = { "id" }, size = 10, direction = Sort.Direction.ASC) Pageable pageable){
  : pageable을 매개변수로 넘겨줌 (page=0 자동으로 시작함)


 - int maxNavCnt = 10; // 한 페이지에 10개 의 버튼을 보여줌


3. html

th:with=
 "start=${(list.currentPage/maxNavCnt)*maxNavCnt+1},
  end=(${(list.totalPages == 0) ? '' :  (start + (maxNavCnt - 1) < list.totalPages ? start + (maxNavCnt - 1) : list.totalPages)})">

- start : 첫번째 버튼이 1,11,21,31,.. 이 되도록
 - end : 전체 페이지 버튼ㅇ; 0이면 버튼 아예 안보여주고,
전체 페이지 버튼이 0이 아니고, 10<2 이면 전체 페이지 버튼2개까지 보여주고 / 그렇지 않으면 다른거..

- 이전버튼 : 현재페이지가 10개보다작을 때 안보여주고, 현재페이지가 10개보다 클때 보여줌(start-maxNavCnt-1)
- 다음버튼 : 한 화면의 버튼 개수와 전체 총 페이지가 같을때 안보여주고, 다르면 보여줌(start+maxNavCnt-1)

728x90