동적 쿼리 - Querydsl

예제
설명 : tag가 포함된 Item 리스트를 검색하고 order에 맞는 OrderBy를 수행한다.
tag가 null이면 where절이 무시되고 order가 null이면 등록일자(내림차순)으로 정렬된다.

	public List<Item> findItemList(String tag, String order) {
        BooleanBuilder builder = new BooleanBuilder();
        if (StringUtils.hasText(tag)) {
            builder.and(tag.title.eq(tag));
        }
        return queryFactory.selectFrom(item)
                .leftJoin(item.tags, tag)
                .where(builder)
                .orderBy(itemSort(order))
                .fetch();
    }

    private OrderSpecifier<?> itemSort(String order) {
        if ("popular".equals(order)) {
            return item.rating.desc();
        }
        return item.enrolledDateTime.desc();
    }
  1. BooleanBuilder

  2. OrderSpecifier<>

내용 추가 예정

좋은 웹페이지 즐겨찾기