페이지네이션

2024. 12. 17. 10:48·웹공부/SPRING

 

- 참조 링크

https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html

 

JPA Query Methods :: Spring Data JPA

By default, Spring Data JPA uses position-based parameter binding, as described in all the preceding examples. This makes query methods a little error-prone when refactoring regarding the parameter position. To solve this issue, you can use @Param annotati

docs.spring.io

 

- repository/NewsRepository.java

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@Repository
public interface NewsRepository extends JpaRepository<News, Long>{
    Page<News> findAll(Pageable pageable);
}

 

- controller/NewsController.java

  • @RequestParam(0부터)로 page를 int page에 넣겠다.
  • Pageable pageable = PageRequest.of(page:현재페이지, 몇개 페이지)
  • 리스폰스로 pageable찾기
  • hasNext, hasPrev는 이전과 다음의 존재여부
    // 페이지네이션
    @GetMapping("/list")
    public String getNewsList(Model model,
                              @RequestParam(name = "page", defaultValue = "0") int page) {
        Pageable pageable = PageRequest.of(page, 5);
        Page<News> newsPage = newsRepository.findAll(pageable);
        model.addAttribute("newsPage", newsPage);

        model.addAttribute("prev", pageable.previousOrFirst().getPageNumber());
        model.addAttribute("next", pageable.next().getPageNumber());
        model.addAttribute("hasNext", newsPage.hasNext());
        model.addAttribute("hasPrev", newsPage.hasPrevious());
        return "news/list";
    }

 

- resources/templates/news/list.mustache

{{>layouts/header}}
<div class="container mt-4">
    <ul class="list-group">
        {{#newsPage.content}}
            <li class="list-group-item">
                <h4 class="mb-2"><a href="/news/{{newsId}}">제목 : {{title}}</a></h4>
                <small class="text-muted">News ID: {{newsId}}</small>
            </li>
        {{/newsPage.content}}
        <br>
        <a href="/news/new">Create News</a>
        <ul class="pagination justify-content-center">
            {{#hasPrev}}
                <a class="page-link" href="?page={{prev}}">Previous</a>
            {{/hasPrev}}
            {{#hasNext}}
                <a class="page-link" href="?page={{next}}">Next</a>
            {{/hasNext}}
        </ul>
    </ul>
</div>
{{>layouts/footer}}

 

'웹공부 > SPRING' 카테고리의 다른 글

예외 처리  (0) 2024.12.17
Delete, Update  (0) 2024.12.17
BootStrap 실습 (Create, Read)  (0) 2024.12.16
SPRING 기본  (1) 2024.12.13
Intellj Community Edition에서 SPRING 작동하는 법  (0) 2024.12.13
'웹공부/SPRING' 카테고리의 다른 글
  • 예외 처리
  • Delete, Update
  • BootStrap 실습 (Create, Read)
  • SPRING 기본
Rabet
Rabet
  • 블로그 메뉴

    • 관리자
    • 글쓰기
  • Rabet
    卯
    Rabet
  • 전체
    오늘
    어제
    • Root (139)
      • KT AIVLE School (85)
        • Start (4)
        • Python프로그래밍 & 라이브러리 (6)
        • 데이터 처리 및 분석 (7)
        • 데이터 분석 및 의미 찾기 (7)
        • 웹크롤링 (10)
        • 머신러닝 (10)
        • 딥러닝 (6)
        • 시각지능 딥러닝 (10)
        • 언어지능 딥러닝 (6)
        • JAVA (4)
        • SQL (2)
        • 가상화 클라우드 (5)
        • 프로젝트 (8)
      • QA (2)
        • 오류사항 (1)
      • 웹공부 (14)
        • SPRING (11)
        • React (1)
      • 코딩 알고리즘 스터디 (23)
      • 코딩테스트 (9)
        • JAVA (8)
        • HTML (1)
      • CS공부 (3)
      • 자격증공부 (3)
        • 정보처리기사 (1)
        • 컴퓨터활용능력 1급 (1)
        • AICE Associate (1)
        • CSTS (0)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Rabet
페이지네이션
상단으로

티스토리툴바