Open berryberrybin opened 1 year ago
public class QueryDslOrderByMaker {
public static OrderSpecifier[] from(Class type, Sort sort) {
return sort.stream()
.map(order -> {
Order direction = order.isAscending() ? Order.ASC : Order.DESC;
String property = order.getProperty();
PathBuilder pathBuilder = new PathBuilder(type, type.getSimpleName().substring(0, 1).toLowerCase() + type.getSimpleName().substring(1));
return new OrderSpecifier(direction, pathBuilder.get(property));
})
.collect(Collectors.toList())
.toArray(OrderSpecifier[]::new);
}
}
public class EnquiryRepositoryImpl implements EnquiryRepositoryCustom {
private final JPAQueryFactory queryFactory;
public EnquiryRepositoryImpl(EntityManager em) {
this.queryFactory = new JPAQueryFactory(em);
}
@Override
public Page<Enquiry> searchEnquiryByCondition(EnquirySearchCondition condition, Pageable pageable) {
List<Enquiry> content = queryFactory
.select(enquiry)
.from(enquiry)
.where(getPredicatesOfCondition(condition))
.orderBy(QueryDslOrderByMaker.from(Enquiry.class, pageable.getSort())) // 코드 변경
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();
JPAQuery<Long> countQuery = queryFactory.select(enquiry.count())
.from(enquiry)
.where(getPredicatesOfCondition(condition));
return PageableExecutionUtils.getPage(content, pageable, countQuery::fetchOne);
}
}
최신등록순/오래된순 정렬
private Boolean sortByNewest;
필드가 true이거나 null일 경우 최신등록순 정렬 구현public class EnquiryRepositoryImpl implements EnquiryRepositoryCustom {
}