for (Sort.Order order : pageable.getSort()) {
     PathBuilder<Object> path = new PathBuilder<Object>(Object.class, order.getProperty());
     query.where(builder).orderBy(new OrderSpecifier(com.querydsl.core.types.Order.valueOf(order.getDirection().name()), path));
}

1. 위와 같이 작성할 경우, 프론트에서 as 로 표현하는 값을 내려주면 entity와 무관하게 정렬 가능.

 

PathBuilder<Entity> entityPath = new PathBuilder(Entity.class, "entity");

2. 위와 같은 형태로 사용할 경우 pageable에 들어가는 변수가 엔티티에 종속된다.

 

 

Path<Long> rank = Expressions.numberPath(Long.class, "rank");

3. 위와 같은 형태로 사용할 경우는 엔티티에 종속되지 않지만 클래스를 변수마다 명시해줘야 한다.

 

 

2,3 번은 서브쿼리로 다른 테이블의 데이터를 불러왔을때 조회하기에 어렵다. if문으로 갈라야하는 제한이 생긴다.

하지만 1번처럼 작성할경우 프론트와 규칙만 잘 정해서 주는대로 모든걸 처리할 수 있다.

 

 

querydsl를 정리하기 위한 프로젝트 생성 후 깃까지 추가할 예정

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함