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를 정리하기 위한 프로젝트 생성 후 깃까지 추가할 예정
'Java & Spring Boot' 카테고리의 다른 글
기본 클래스 org.gradle.wrapper.GradleWrapperMain을(를) 찾거나 로드할 수 없습니다. (0) | 2021.11.04 |
---|---|
Querydsl OneToMany 조건 검색, ListPath (0) | 2021.10.20 |
Unknown lifecycle phase ".test.skip=true". (0) | 2021.09.30 |
OS, Process, Thread (0) | 2020.10.08 |
Java -jar 커맨드 명령어 (0) | 2020.09.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- gradle
- Review
- Book
- GIT
- vscode
- c++
- java
- OS
- Kafka
- springboot
- Kafdrop
- 도커
- Spring
- JPA
- @AutoConfigureJsonTesters
- deployer
- 그리디
- querydsl
- github
- Algorithm
- 캡션
- Chirpy
- Intellij
- tomcat
- fillInStackTrace
- MySQL
- docker
- @Inherited
- Word
- multirow insert
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함