動的クエリー-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();
    }

  • BooleanBuilder

  • OrderSpecifier<>
  • コンテンツの追加