728x90
정렬처리하는 방법
메소드로도 가능하지만,
List<Product> findByNameOrderByPrice(String name);
너무 길어지면 보기힘들다는 단점이 있어 파라미터로 생성한다.
그리고, 한가지 조건만이 아닌 여러 조건도 충족할 수 있는 장점이 있다.
public interface ProductRepository extends JpaRepository<Product, Long> {
List<Product> findByName(String name, Sort sort);
}
테스트 코드
@Test
void sortingAndPagingTesT() {
Product product1 = new Product();
product1.setName("펜");
product1.setPrice(1000);
product1.setStock(100);
product1.setCreatedAt(LocalDateTime.now());
product1.setUpdatedAt(LocalDateTime.now());
Product product2 = new Product();
product2.setName("펜");
product2.setPrice(2000);
product2.setStock(200);
product2.setCreatedAt(LocalDateTime.now());
product2.setUpdatedAt(LocalDateTime.now());
Product product3 = new Product();
product3.setName("펜");
product3.setPrice(3000);
product3.setStock(300);
product3.setCreatedAt(LocalDateTime.now());
product3.setUpdatedAt(LocalDateTime.now());
productRepository.save(product1);
productRepository.save(product2);
productRepository.save(product3);
System.out.println("펜이라는 이름으로 검색하고 가격오름차순 검색");
productRepository.findByName("펜", Sort.by(Sort.Order.asc("price")));
System.out.println("펜이라는 이름으로 검색하고 가격오름차순 검색 후 재고로 내림차순");
productRepository.findByName("펜", Sort.by(Sort.Order.asc("price"), Sort.Order.desc("stock")));
}
실행 시 쿼리
펜이라는 이름으로 검색하고 가격오름차순 검색
Hibernate:
select
product0_.number as number1_0_,
product0_.created_at as created_2_0_,
product0_.name as name3_0_,
product0_.price as price4_0_,
product0_.stock as stock5_0_,
product0_.updated_at as updated_6_0_
from
product product0_
where
product0_.name=?
order by
product0_.price asc
펜이라는 이름으로 검색하고 가격오름차순 검색 후 재고로 내림차순
Hibernate:
select
product0_.number as number1_0_,
product0_.created_at as created_2_0_,
product0_.name as name3_0_,
product0_.price as price4_0_,
product0_.stock as stock5_0_,
product0_.updated_at as updated_6_0_
from
product product0_
where
product0_.name=?
order by
product0_.price asc,
product0_.stock desc
페이징 처리
- 데이터베이스의 레코드를 개수로 나누어 페이지를 구분하는 것을 의미
ex) 25개의 레코드 -> 7개씩 총 4개의 페이지로 구분하고 특정 페이지를 가져오는 것
728x90
'Spring > JPA' 카테고리의 다른 글
JPQL 과 QueryDsl 의 차이 (기초) (0) | 2022.10.09 |
---|---|
Querydsl 설정 (0) | 2022.10.09 |
JPQL - Query타입, 결과조회, 파라미터, 프로젝션, 페이징, 조인 (0) | 2022.09.27 |
즉시로딩 지연로딩 (0) | 2022.09.27 |
JPA 프록시 (1) | 2022.09.26 |
댓글