[SPRING] Spring 데이터에서 OrderBy를 findAll과 함께 사용하는 방법
SPRINGSpring 데이터에서 OrderBy를 findAll과 함께 사용하는 방법
나는 봄 데이터를 사용하고 DAO는 다음과 같다.
public interface StudentDAO extends JpaRepository<StudentEntity, Integer> {
public findAllOrderByIdAsc(); // I want to use some thing like this
}
위의 코드에서 주석 처리 된 행은 나의 의도를 보여줍니다. 스프링 데이터가 빌트인 기능을 제공 할 수 있는가? 이러한 방법을 사용하여 ASC / DESC를 사용하여 모든 레코드 순서를 찾을 수 있습니까?
해결법
-
==============================
1.
public interface StudentDAO extends JpaRepository<StudentEntity, Integer> { public List<StudentEntity> findAllByOrderByIdAsc(); }
위의 코드가 작동해야합니다. 비슷한 것을 사용하고 있습니다.
public List<Pilot> findTop10ByOrderByLevelDesc();
최상위 레벨을 가진 10 개의 행을 반환합니다.
중대한: 이 답변의 요점을 놓치기 쉽다는 말을 들었 기 때문에 여기에 약간의 설명이 있습니다.
findAllByOrderByIdAsc(); // don't miss "by" ^
-
==============================
2.AFAIK, 나는이 방법이 직접적인 메서드 명명 쿼리로 가능하다고 생각하지 않는다. 그러나 Sort 클래스를 사용하여 내장 정렬 메커니즘을 사용할 수 있습니다. 저장소에는 정렬의 인스턴스를 전달할 수있는 findAll (Sort) 메소드가 있습니다. 예 :
AFAIK, 나는이 방법이 직접적인 메서드 명명 쿼리로 가능하다고 생각하지 않는다. 그러나 Sort 클래스를 사용하여 내장 정렬 메커니즘을 사용할 수 있습니다. 저장소에는 정렬의 인스턴스를 전달할 수있는 findAll (Sort) 메소드가 있습니다. 예 :
import org.springframework.data.domain.Sort; @Repository public class StudentServiceImpl implements StudentService { @Autowired private StudentDAO studentDao; @Override public List<Student> findAll() { return studentDao.findAll(sortByIdAsc()); } private Sort sortByIdAsc() { return new Sort(Sort.Direction.ASC, "id"); } }
-
==============================
3.여기를 보시기 바랍니다 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
여기를 보시기 바랍니다 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
섹션 아래 : "표 2.3. 메소드 이름 내에 지원되는 키워드"
나는 당신이 말한 것과 똑같은 질의가 필요하다고 생각합니다.
-
==============================
4.예, Spring 데이터에서 쿼리 메소드를 사용하여 정렬 할 수 있습니다.
예, Spring 데이터에서 쿼리 메소드를 사용하여 정렬 할 수 있습니다.
예 : id 필드의 값을 사용하여 오름차순 또는 내림차순
암호:
public interface StudentDAO extends JpaRepository<StudentEntity, Integer> { public findAllByOrderByIdAsc(); }
대체 솔루션 :
@Repository public class StudentServiceImpl implements StudentService { @Autowired private StudentDAO studentDao; @Override public List<Student> findAll() { return studentDao.findAll(orderByIdAsc()); } private Sort orderByIdAsc() { return new Sort(Sort.Direction.ASC, "id") .and(new Sort(Sort.Direction.ASC, "name")); } }
스프링 데이터 정렬 : 정렬
-
==============================
5.이 예제에서는 OrderBy 정렬을위한 완벽한 예제를 보여주기 위해 노력합니다.
이 예제에서는 OrderBy 정렬을위한 완벽한 예제를 보여주기 위해 노력합니다.
import java.util.List; import org.springframework.data.domain.Page; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.repository.*; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.springframework.data.domain.Sort; /** * Spring Data repository for the User entity. */ @SuppressWarnings("unused") @Repository public interface UserRepository extends JpaRepository<User, Long> { List <User> findAllWithCustomOrderBy(Sort sort); }
이 예제를 사용합니다 : Sort 인스턴스를 동적으로 빌드하는 메소드.
import org.springframework.data.domain.Sort; public class SampleOrderBySpring{ Sort dynamicOrderBySort = createSort(); public static void main( String[] args ) { System.out.println("default sort \"firstName\",\"name\",\"age\",\"size\" "); Sort defaultSort = createStaticSort(); System.out.println(userRepository.findAllWithCustomOrderBy(defaultSort )); String[] orderBySortedArray = {"name", "firstName"}; System.out.println("default sort ,\"name\",\"firstName\" "); Sort dynamicSort = createDynamicSort(orderBySortedArray ); System.out.println(userRepository.findAllWithCustomOrderBy(dynamicSort )); } public Sort createDynamicSort(String[] arrayOrdre) { return Sort.by(arrayOrdre); } public Sort createStaticSort() { String[] arrayOrdre ={"firstName","name","age","size"); return Sort.by(arrayOrdre); } }
from https://stackoverflow.com/questions/25486583/how-to-use-orderby-with-findall-in-spring-data by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 최대 절전 모드 + 스프링 캐싱 - 몇 가지 질문! (0) | 2018.12.28 |
---|---|
[SPRING] Spring 3와 함께 REST에서 로그인 / 로그 아웃 (0) | 2018.12.28 |
[SPRING] Spring : 경로와 관련된 / **와 / *의 차이점 (0) | 2018.12.28 |
[SPRING] Spring의 Dispatcher Servlet은 무엇입니까? (0) | 2018.12.28 |
[SPRING] 봄 @ 자동 사용 (0) | 2018.12.28 |