JPA 페이징 정리
RepositoryPage<Entity> findBySearch(String search, Pageable pageable) Controller@PageDefault(page=n, size=n, sort="필드이름", direction=Direction.class) 또는 설정파일에서 설정Pageable pageable 파라미터로 url 쿼리스트링 받음 Url?page=0&size=10&sort=field,direction&sort=field&field.dir=directionpage는 0부터 시작 페이지를 구성하는 요소 Pageable의 page, PageImpl의 number : 현재 페이지 Pageable의 size : 한 페이지의 데이터 개수 Pageable의 offset : 데이터 필터 시작 위치 limit : 오프셋으로부터 가져올 데이터 개수 == Pageable의 size PageImpl의 totalElements: 총 데이터 개수 PageImpl의 totalPage: 총 페이지 개수 PageImpl의 hasNext hasPrev isFirst isLast new PageImpl<>(results, pageable, totalElements) JPA가 아니라면, 총페이지를 구할 때는 데이터 총개수를 count쿼리로 가져온 후 총개수를 사이즈로 나눔 총 페이지 수는 다음과 같음 1. 총개수가 size보다 작을 경우에는 1 2. 나머지가 있는 경우에는 (totalCount / size) + 1 3. 나누어 떨어지는 경우에는 totalCount / size 페이지 넘버 나열하기 기본 10개씩 페이지 넘버 정렬한다고 가정. 시작 페이지 넘버는 다음과 같음 1. totalPage가 10이하일 경우에는 totalPage까지. 2. totalPage가 10이상일 경우에는 (현재 페이지 넘버 - (현재 페이지 넘버 / 10)) + 1 부터 +1 하며 10개 나열 * 이전 버튼은 현재 페이지 시작 넘버(:first)가 1이 아닐 경우 현재 페이지 시작 넘버 - 1 * 다음 버튼은 현재 페이지 끝 넘버가 totalPage가 아닌 경우 현재 페이지 끝 넘버 + 1 데이터 인덱스 목록 ( (현재 페이지 넘버 - 1) * size ) + 1 부터 +1 하면서 데이터 나열