티스토리 뷰

TIL

[TIL] 스프링 DATA JPA 페이징 2022/10/22

아몬드통 2022. 10. 22. 22:51
  1. 오늘은 프로젝트 게시판처럼 표현할 부분 페이징을 했다.
  2. 페이징이 그렇게 어려운 개념은 아닌데 JPA로는 서버단에서 처리하고
  3. 프론트에서는 thymeleaf로 하니까 좀 헷갈리면서 어려운 부분이 많았다.
  4. 특히 보통 게시판은 1부터 시작인데 이 JPA는 0부터 시작이다. 그래서 보이는 부분은 1로 보이게 처리했는데 잘 됐겠지?
  5. 개인적으로 SEO를 제외하고는 SPA가 더 좋다고 보는데 아마 페이징도 뭔가 좀 더 논리적이겠지?
  6. 노력하자. 진짜.. 실력이 너무 부족하다.
<div class="row">
    <div class="col-lg-10 mx-auto">
        <nav aria-label="Page navigation example">
            <ul class="pagination" th:with="numPerBlock=5">
                <!-- 이전페이지 버튼 -->
                <li class="page-item">
                    <a class="page-link page-link-nav"  th:with="baseUrl=('/user-dashboard-booking/' + ${(ordersDTOList.getNumber()/numPerBlock == 0) ? 1:((ordersDTOList.getNumber()/numPerBlock - 1)*numPerBlock + numPerBlock)})"
                       th:href="@{${baseUrl}}" aria-label="Previous">
                        <span aria-hidden="true"><i class="la la-angle-left"></i></span>
                        <span class="sr-only">Previous</span>
                    </a>
                </li>
                <!-- 페이지의 수 -->
                <th:block th:each="num : ${#numbers.sequence(ordersDTOList.getNumber()/numPerBlock * numPerBlock ,(ordersDTOList.getNumber()/numPerBlock * numPerBlock + numPerBlock - 1) > ordersDTOList.getTotalPages() ? ordersDTOList.getTotalPages() - 1:(ordersDTOList.getNumber()/numPerBlock * numPerBlock + numPerBlock - 1))}">
                    <li class="page-item" th:classappend="${ordersDTOList.getNumber() == num} ? 'active' : ''">
                        <a class="page-link page-link-nav" th:href="@{/user-dashboard-booking/{id}(id = ${num + 1})}" th:text="${num + 1}">1</a>
                    </li>
                </th:block >

                <!-- 다음페이지 버튼 -->
                <li class="page-item">
                    <a class="page-link page-link-nav"  th:with="baseUrl=('/user-dashboard-booking/' + ${((ordersDTOList.getNumber()/numPerBlock + 1)*numPerBlock + 1) > ordersDTOList.getTotalPages() ? ordersDTOList.getTotalPages(): ((ordersDTOList.getNumber()/numPerBlock + 1)*numPerBlock + 1)})"
                       th:href="@{${baseUrl}}" aria-label="Next">
                        <span aria-hidden="true"><i class="la la-angle-right"></i></span>
                        <span class="sr-only">Previous</span>
                    </a>
                </li>

            </ul>
        </nav>
    </div><!-- end col-lg-12 -->
댓글