• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

동적으로 Order 절 만드는 코드 공유합니다

23.10.01 15:27 작성 조회수 227

2

  1. 강의에서는 Query DSL 4.x 버전이어서 제네릭 없는 예제 코드인 것 같은데, 제가 올리는 버전은 5.0 버전이어서 차이가 있음을 감안해주세요.

  2. 정렬 조건을 하나만 추가하는 코드입니다. 정렬 조건을 여러 개 추가하려면 반복문을 돌면서 JPAQuery 를 동적으로 확장해나가면 됩니다.

 

// 페이징하는 메소드에서 사용
private Expression<? extends Comparable<?>> specifyMemberProperty(String prop) {

    prop = prop == null ? "" : prop.toLowerCase();

    if (prop.equals("username")) {
        return member.username;
    }
    if (prop.equals("age")) {
        return member.age;
    }
    return member.id;
}

 

// 페이징하는 메소드
// ...
.orderBy(new OrderSpecifier<>("desc".equalsIgnoreCase(dir) ? Order.DESC : Order.ASC, specifyMemberProperty(prop)))
.fetch();

 

--

저는 일단 이렇게 만들어봤는데, 다른 분께서 더 나은 코드, 더 빠른 코드가 있다면 저한테도 알려주세요.

감사합니다.

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!