본문 바로가기

JPA

[JPA] findAll 일 때 정렬하기 (OrderBy, Sort)

반응형

1. OrderBy 사용하기 - OrderBy + 속성 + ASC/DESC

아래와 같이 findAll, findAllBy[조건] 뒤에 OrderBy[정렬기준]을 써주면 된다. 내림차순으로 정렬하고 싶다면, 뒤에 Desc를 붙여주면 된다.

 

[ findAll에서 OrderBy 예제 ]

예제는 아래와 같다. 첫번째는 id 기준으로 postList를 정렬하는 것이고, 두번째는 id를 내림차순으로 결과를 가져오는 것이다.

또한 당연한 얘기지만, PostRepository에 List<Post> findAllOrderById(); 처럼 선언을 해놓고 controller에서 아래처럼 사용해야 한다.

List<Post> postList = postRepository.findAllOrderById();
List<Post> list = postRepository.findAllOrderByIdDesc();

 

+ GreaterThan : cnt가 5보다 큰 애들을 id 기준으로 정렬하고 싶다면 findByCntGreaterThanOrderById(5)라고 하면 된다.

 

 

 

2. Sort 사용하기  - findAll(Sort.by([정렬기준]))

아래와 같이 findAll, findAllBy[조건] 괄호 안에 Sort.by([정렬기준])을 써주면 된다.

내림차순으로 정렬하고 싶다면, Sort.by(Sort.Direction.DESC, [정렬기준]))을 사용해주면 된다.

 

[ findAll에서 Sort 예제 ]

예제는 아래와 같다. 첫번째는 id 기준으로 postList를 정렬하는 것이고, 두번째는 id를 내림차순으로 결과를 가져오는 것이다.

List<Post> posts = postRepository.findAll(Sort.by("id"));
List<Post> posts = postRepository.findAll(Sort.by(Sort.Direction.DESC, "id"));

 

728x90
반응형

'JPA' 카테고리의 다른 글

[JPA] 복수 조건 조회, WHERE 다중 조건 (And, Or 등)  (0) 2022.07.14