인프런 커뮤니티 질문&답변

psam1017님의 프로필 이미지

작성한 질문수

실전! Querydsl

스프링 데이터 페이징 활용3 - 컨트롤러 개발

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

해결된 질문

23.10.01 15:27 작성

·

291

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();

 

--

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

감사합니다.

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
psam1017님의 프로필 이미지

작성한 질문수

질문하기