스프링 부트

Pegeable 이란?

john_ 2023. 4. 4. 11:06
728x90

 

많은 게시판에서 모든 글들을 한번에 보여주지 않고 페이지를 나눠 쪽수별로 제공합니다.

정렬 방식 또한 설정해서 보고 싶은 정보의 우선 순위를 설정 할 수 있습니다.

이처럼 정렬 방식과 페이지의 크기, 그리고 몇페이지 인지를 요청에 따라 정보를 전달해주는 것이 Pagination 입니다.

 

이를 개발자가 직접 구현해서 사용할수 있으나, JPA에서는 이를 편하게 사용할 수 있도록 Pageable이라는 객체를 제공합니다.

 

QuerydslPredicateExecutor : Predicate'이 조건이 맞다' 고 판단하는 근거를 함수로 제공하는것으로,

RepositoryPredicate를 파라미터로 전달하기 위해 QueryDslPredicateExecutor 인터페이스를 상속 받습니다.

 

BooleanBuilder : 쿼리의 조건 설정인 where 뒤의 조건을 생성해 줍니다.

 

StringUtils 클래스 : 자바의 String 클래스가 제공하는 문자열 관련 기능을 강화한 클래스

 

PageRequest.of(page, size)  : 

 

@Test
@DisplayName("상품 Querydsl 조회 테스트 2")
public void queryDslTest2(){

this.createItemList2();

BooleanBuilder booleanBuilder = new BooleanBuilder();
QItem item = QItem.item;
String itemDetail = "테스트 상품 상세 설명";
int price = 10003;
String itemSellStat = "SELL";

booleanBuilder.and(item.itemDetail.like("%" + itemDetail + "%"));
booleanBuilder.and(item.price.gt(price));

if(StringUtils.equals(itemSellStat, ItemSellStatus.SELL)){
booleanBuilder.and(item.itemSellStatus.eq(ItemSellStatus.SELL));
}

Pageable pageable = PageRequest.of(0, 5);
Page<Item> itemPagingResult = itemRepository.findAll(booleanBuilder, pageable);
System.out.println("total elements : " + itemPagingResult.getTotalElements());
List<Item> resultItemList = itemPagingResult.getContent();
for(Item resultItem: resultItemList){
System.out.println(resultItem.toString());
}
}

 

728x90

'스프링 부트' 카테고리의 다른 글

server.port=8080 고정되는 이슈 발생  (0) 2025.03.16
Automatic Restart 적용 하기  (0) 2023.04.04
JPAQuery 데이터 반환 메소드  (0) 2023.04.04
QItem 이란?  (0) 2023.04.04
쿼리 메소드  (0) 2023.04.03