본문 바로가기

Java/Spring Jpa

정렬

컬럼값으로 정렬하기

sort class사용

Sort sort1 = Sort.by("name").descending();     // 내림차순
Sort sort2 = Sort.by("password").ascending();  // 오름차순
Sort sortAll = sort1.and(sort2);      // 2개이상 다중정렬도 가능하다
Pageable pageable = PageRequest.of(0, 10, sortAll);  // pageable 생성시 추가

컬럼이 아닌 값으로 정렬

// 아래와 같이 AS user_password 로 Alias(AS) 를 걸어주면
@Query("SELECT u, u.password AS user_password FROM user u WHERE u.username = ?1")
List<User> findByUsername(String username, Sort sort);
// 이렇게 해당 user_password 를 기준으로 정렬할 수 있다.
List<User> users = findByUsername("user", Sort.by("user_password"));

SQL 함수를 사용해서 정렬하기

// 아래와 같이 일반적인 쿼리에서
List<User> findByUsername(String username, Sort sort);
// 이렇게 쿼리함수 LENGTH() 조건을 걸어서 password 문자길이 기준으로 정렬할 수 있다.
List<User> users = findByUsername("user", JpaSort.unsafe("LENGTH(password)"));

 

'Java > Spring Jpa' 카테고리의 다른 글

QueryDSL  (0) 2023.02.02
원하는 값만 쿼리로 가져오기  (0) 2023.02.02
delete() 메서드 최적화  (0) 2023.02.02
Repository 기능 제한  (0) 2023.02.02
Cascade와 orphanRemoval  (0) 2023.02.02