Spring Data JPA 데이터 페이지 와 정렬 방법
안내
수천 개의 목록 데 이 터 를 한꺼번에 불 러 오 면 웹 페이지 에 표시 하 는 데 시간 이 많이 걸 리 고 사용자 체험 이 좋 지 않 습 니 다.따라서 비교적 큰 데이터 조회 결 과 를 처리 할 때 페이지 별 조 회 는 필수 적 이다.페이지 조 회 는 반드시 일정한 정렬 규칙 에 수반 되 어야 한다.그렇지 않 으 면 페이지 데이터 의 상 태 를 통제 하기 어려워 서 사용자 가 서로 다른 페이지 에서 같은 데 이 터 를 볼 수 있다.그렇다면 본 논문 의 주요 내용 은 Spring Data JPA 를 어떻게 사용 하여 페이지 와 순 서 를 나 누 는 지 소개 하 는 것 이다.
실체 정의
우 리 는 간단 한 실체 정 의 를 사용 합 니 다:Article(문장)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@Table(name="article")
public class Article {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false,length = 32)
private String author;
@Column(nullable = false, unique = true,length = 32)
private String title;
@Column(length = 512)
private String content;
private Date createTime;
}
인터페이스 정의 ArticleRepository 계승 PagingAndSortingRepository。Paging AndSorting Repository 인 터 페 이 스 는 기본 적 인 CURD 함수 뿐만 아니 라 정렬,페이지 별 인터페이스 함수 정의 도 지원 합 니 다.
public interface ArticleRepository extends PagingAndSortingRepository<Article,Long> {
// article , Pageable , SQL
Page<Article> findAll(Pageable pageable);
// author article , Pageable , SQL
Page<Article> findByAuthor(String author, Pageable pageable);
// author title , article , Pageable , SQL
Slice<Article> findByAuthorAndTitle(String author, String title, Pageable pageable);
}
4.페이지 나 누 기 실현Pageable Spring 이 정의 하 는 인터페이스 입 니 다.페이지 매개 변 수 를 전달 하 는 데 사 용 됩 니 다.어떻게 사용 하 는 지 보 겠 습 니 다.먼저 ArticleRepository 를 영구적 인 작업 이 필요 한 클래스 에 주입 합 니 다.보통@Service 주해 의 클래스 입 니 다.그리고 서비스 방법 에서 다음 과 같은 코드 를 사용 하여 페이지 를 나 누 어 작업 합 니 다.첫 페이지(0 부터)의 데 이 터 를 조회 하고 페이지 당 10 개의 데 이 터 를 조회 합 니 다.
Pageable pageable = PageRequest.of(0, 10); //
//Pageable pageable = PageRequest.of(0, 10); //
//Pageable pageable = PageRequest.of(0, 10); //
//
Page<Article> articlePage = articleRepository.findAll(pageable);
// List
List<Article> articleList = articlePage.getContent();
findAll 방법 은 Page 류 의 대상 을 응답 으로 합 니 다.검색 결과 List 를 얻 으 려 면 getContent()방법 을 사용 할 수 있 습 니 다.그러나 필 자 는 이렇게 전환 하 는 것 을 건의 하지 않 는 다.전단 에 페이지 목록 을 보 여 주 는 것 은 데이터 뿐만 아니 라 페이지 정보 도 필요 하기 때문이다.예 를 들 어 현재 몇 페이지,각 페이지 마다 몇 페이지,모두 몇 페이지,모두 몇 페이지 입 니까?이 정 보 는 Page(articlePage)대상 에서 모두 얻 을 수 있 습 니 다.5.정렬 실현
Spring Data JPA 에서 하 나 를 제 공 했 습 니 다.
Sort
대상 은 정렬 체 제 를 제공 하 는 데 사용 된다.정렬 방식 을 봅 시다.
articleRepository.findAll(Sort.by("createTime"));
articleRepository.findAll(Sort.by("author").ascending()
.and(Sort.by("createTime").descending()));
첫 번 째 findAll 방법 은 createTime 의 오름차 순 으로 정렬 하 는 것 입 니 다.첫 번 째 findAll 방법 은 author 의 오름차 순 으로 정렬 한 다음 createTime 의 내림차 순 으로 정렬 하 는 것 입 니 다.
페이지 를 나 누 어 정렬 하 다.
Pageable pageable = PageRequest.of(0, 10,Sort.by("createTime"));
6.Slice 와 PageArticleRepository 에서 우 리 는 Slice 와 다른 방법 으로 페이지 로 돌아 가 는 방법 을 보 았 다.Spring Data JPA 의 데이터 응답 인터페이스 입 니 다. Page 예. Slice 의 하위 인터페이스.그것들 은 모두 데 이 터 를 저장 하고 되 돌려 주 는 데 쓰 인 다.
6.1.Slice
보 여 주세요. Slice 의 중요 한 방법 들
List <T> getContent(); //
Pageable getPageable(); //
boolean hasContent(); // ?
boolean isFirst(); //
boolean isLast(); //
Pageable nextPageable(); //
Pageable previousPageable(); //
6.2.Page페이지 는 Slice 의 하위 인터페이스 입 니 다.다음은 중요 한 방법 입 니 다.
//
int getTotalPages();
//
long getTotalElements();
그럼 슬라이스 는 언제 사용 하나 요?페이지 는 언제 사용 합 니까?답:이 두 인터페이스의 함수 정 의 를 통 해 알 수 있 듯 이 Slice 는 다음 조각(페이지)이 존재 하 는 지 에 만 관심 을 가지 고 데이터베이스 count 에 가서 총 항목 수,총 페이지 수 를 계산 하지 않 습 니 다.따라서 빅 데이터 리스트 에 적합 한 마우스 나 손가락 슬라이더 조작 은 총 몇 페이지 가 있 는 지 에 관심 이 없고 다음 페이지 가 있 는 지 에 만 관심 이 있다.Page 는 전통 적 인 응용 프로그램의 table 개발 에 비교적 적합 하 므 로 총 페이지 수 와 총 항목 수 를 알 아야 한다.
총결산
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 Spring Data JPA 의 데이터 페이지 와 정렬 방법 입 니 다.여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.