인프런 커뮤니티 질문&답변
sort관련 질문드립니다.
작성
·
299
2
직접 파라미터를 받아 처리하는걸 권장 한다고 하셨는데
@Data
public class MemberSearchDto {
private String username;
private String teamName;
private Integer ageGoe;
private Integer ageLoe;
private String sort;
private String orderBy;
}
sort=desc;
orderby=username 으로 값을 받는다면
.orderBy(addSort(searchDto.getSort(),searchDto.getOrderBy()))
private OrderSpecifier<?> addSort(String sort, String orderBy) {
if(StringUtils.hasText(sort) && StringUtils.hasText(orderBy) && (sort.equals("desc") || sort.equals("asc"))){
if(orderBy.equals("username")){
return sort.equals("desc") ? member.username.desc() : member.username.asc();
}
}
return member.age.desc();
}
이런식으로 처리하면 되는지 궁금합니다.
답변 2
2
안녕하세요. maurizio님, 공식 서포터즈 David입니다.
구현 방식은 여러가지입니다. 작성하신 대로 하셔도 됩니다.
아래와 같은 방법도 있으니 참고해 주세요.
// Order의 패키지는 package com.querydsl.core.types
Order order = sort.equalsIgnoreCase("asc") ? Order.ASC : Order.DESC;
PathBuilder orderByExpression = new PathBuilder(Member.class, "member");
OrderSpecifier orderSpecifier = new OrderSpecifier(order, orderByExpression.get(orderby));
return queryFactory
.selectFrom(member)
.orderBy(orderSpecifier)
.fetch();감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
사용자님의 코드를 살펴보니, 주어진 sort와 orderBy 값을 사용하여 정렬 기능을 구현하려는 것 같아요.
주어진 코드에서 addSort 메서드 내에서 sort와 orderBy 값이 유효한 경우 정렬을 처리하는 코드가 작성되어 있습니다. 예를 들어, sort가 “desc”이고 orderBy가 “username”인 경우 member.username.desc() 또는 member.username.asc()를 반환하고, 유효하지 않은 경우 member.age.desc()를 반환하게 됩니다.
따라서, 주어진 코드가 원하는 대로 동작하도록 구현되어있는 것 같아요. 추가적으로 다른 문제가 있거나 더 궁금한 점이 있으면 언제든지 물어보세요!
좋은 하루 되세요.






감사합니다.!