작성
·
2.1K
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
스프링 데이터의 sort를 할때 OrderSpecifier가 있다고 설명해주셨는데 복잡해졌을 때에는 파라미터를 받아서 직접 처리하라고 하신 설명부분에서 정확히 이해를 못했는데 orderby를 사용하라는 뜻인가요?? 아니면 페이징한 데이터를 정렬하는 방법은 어떻게 해야 하는건가요?
답변 1
0
안녕하세요. wjdghks6086님, 공식 서포터즈 y2gcoder입니다.
정확히는 Spring Data에서 쓰던 Pageable의 Sort를 Querydsl의 OrderSpecifier로 변환하는 것을 이번 챕터에서 하셨습니다.
파라미터를 받아서 직접 처리하는 방법은 MemberSearchCondition 같은 곳에 정렬할 컬럼과 정렬 방향을 담아 요청을 받아서 그걸로 처리하라는 말씀으로 이해하시면 될 것 같습니다. 동적 쿼리와 성능 최적화 조회 - Where 절 파라미터 사용 에서 BooleanExpression을 반환하는 메서드를 따로 만들어 사용했던 것처럼, 정렬 컬럼명과 정렬 방향을 받으면 그거에 맞춰 OrderSpecifier를 반환하는 메서드를 만들어 order by를 추가해 적용하면 될 것 같습니다. 다만 querydsl-jpa 의 orderBy() 에는 null을 넣을 수 없어 정렬 조건이 없을 때의 처리를 어떻게 할 것이냐도 추가로 고민해보시면 좋을 것 같습니다.
참고할만한 링크들도 첨부해드리겠습니다.
https://okky.kr/articles/1183696
감사합니다.