From d2abd7f6c75eee2c40e3067849397ee4fe475b92 Mon Sep 17 00:00:00 2001 From: JSoi Date: Wed, 13 Jul 2022 21:27:39 +0900 Subject: [PATCH] =?UTF-8?q?#18=20[Refactor]=20BooleanBuilder=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=84=B0=EB=A7=81,=20DTO=20Rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{BookmarkDTO.java => BookmarkDto.java} | 0 .../mpnp/baechelin/config/QuerydslConfig.java | 4 ++- .../repository/ReviewQueryRepository.java | 4 +-- .../repository/StoreQueryRepository.java | 25 +++++++------------ 4 files changed, 14 insertions(+), 19 deletions(-) rename src/main/java/com/mpnp/baechelin/bookmark/dto/{BookmarkDTO.java => BookmarkDto.java} (100%) diff --git a/src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkDTO.java b/src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkDto.java similarity index 100% rename from src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkDTO.java rename to src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkDto.java diff --git a/src/main/java/com/mpnp/baechelin/config/QuerydslConfig.java b/src/main/java/com/mpnp/baechelin/config/QuerydslConfig.java index 27211a2..581695d 100644 --- a/src/main/java/com/mpnp/baechelin/config/QuerydslConfig.java +++ b/src/main/java/com/mpnp/baechelin/config/QuerydslConfig.java @@ -22,10 +22,12 @@ public JPAQueryFactory jpaQueryFactory() { return new JPAQueryFactory(entityManager); } - public static void locationBuilder(BigDecimal latStart, BigDecimal latEnd, BigDecimal lngStart, BigDecimal lngEnd, BooleanBuilder builder) { + public static BooleanBuilder locationBuilder(BigDecimal latStart, BigDecimal latEnd, BigDecimal lngStart, BigDecimal lngEnd) { + BooleanBuilder builder = new BooleanBuilder(); builder.and(latStart == null ? null : store.latitude.goe(latStart)); builder.and(latEnd == null ? null : store.latitude.loe(latEnd)); builder.and(lngStart == null ? null : store.longitude.goe(lngStart)); builder.and(lngEnd == null ? null : store.longitude.loe(lngEnd)); + return builder; } } diff --git a/src/main/java/com/mpnp/baechelin/review/repository/ReviewQueryRepository.java b/src/main/java/com/mpnp/baechelin/review/repository/ReviewQueryRepository.java index 36f9f1a..8634a53 100644 --- a/src/main/java/com/mpnp/baechelin/review/repository/ReviewQueryRepository.java +++ b/src/main/java/com/mpnp/baechelin/review/repository/ReviewQueryRepository.java @@ -18,7 +18,6 @@ @Transactional public class ReviewQueryRepository extends QuerydslRepositorySupport { private final JPAQueryFactory queryFactory; - private final BooleanBuilder builder = new BooleanBuilder(); public ReviewQueryRepository(JPAQueryFactory queryFactory) { super(Review.class); @@ -30,12 +29,13 @@ public List findRecentReviews(BigDecimal latStart, BigDecimal lngStart, BigDecimal lngEnd, int limit) { - locationBuilder(latStart, latEnd, lngStart, lngEnd, builder); + BooleanBuilder builder = locationBuilder(latStart, latEnd, lngStart, lngEnd); // 위도 경도에 해당하는 가게를 찾음 -> 해당 댓글을 다 가져옴 -> 내림차순 정렬 -> limit return queryFactory.selectFrom(review1) .innerJoin(review1.storeId, store) .on(review1.storeId.id.eq(store.id)) .where(builder) + .orderBy(review1.createdAt.desc()) .limit(limit) .fetch(); } diff --git a/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java b/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java index f5d0e5a..475bee8 100644 --- a/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java +++ b/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java @@ -14,13 +14,13 @@ import java.math.BigDecimal; import java.util.List; +import static com.mpnp.baechelin.config.QuerydslConfig.locationBuilder; import static com.mpnp.baechelin.store.domain.QStore.store; @Repository @Transactional public class StoreQueryRepository extends QuerydslRepositorySupport { private final JPAQueryFactory queryFactory; - private final BooleanBuilder builder = new BooleanBuilder(); public StoreQueryRepository(JPAQueryFactory queryFactory) { super(Store.class); @@ -36,7 +36,7 @@ public List findBetweenLngLat(BigDecimal latStart, List facility, Pageable pageable) { - locAndConditions(latStart, latEnd, lngStart, lngEnd, category, facility); + BooleanBuilder builder = locAndConditions(latStart, latEnd, lngStart, lngEnd, category, facility); return queryFactory.selectFrom(store) .where(builder) @@ -55,23 +55,14 @@ public List findStoreOrderByPoint(BigDecimal latStart, Pageable pageable) { - locAndConditions(latStart, latEnd, lngStart, lngEnd, category, facility); + BooleanBuilder builder = locAndConditions(latStart, latEnd, lngStart, lngEnd, category, facility); return queryFactory.selectFrom(store) .where(builder) - .orderBy(store.pointAvg.desc()) .limit(pageable.getPageSize()) .offset(pageable.getOffset()) + .orderBy(store.pointAvg.desc()) .fetch(); - -// return queryFactory.selectFrom(store) -// .leftJoin(store, review1.storeId) -// .on(store.id.eq(review1.storeId.id)) -// .where(builder) -// .orderBy(review1.point.avg().desc()) -// .limit(pageable.getPageSize()) -// .offset(pageable.getOffset()) -// .fetch(); } //TODO 북마크순 @@ -83,7 +74,8 @@ public List findStoreOrderByBookmark(BigDecimal latStart, List facility, int limit) { - locAndConditions(latStart, latEnd, lngStart, lngEnd, category, facility); + BooleanBuilder builder = locAndConditions(latStart, latEnd, lngStart, lngEnd, category, facility); + return queryFactory.selectFrom(store) .where(builder) @@ -111,13 +103,14 @@ private StringPath givePath(String dbFacility) { return store.toilet; } - private void locAndConditions(BigDecimal latStart, BigDecimal latEnd, BigDecimal lngStart, BigDecimal lngEnd, String category, List facility) { - QuerydslConfig.locationBuilder(latStart, latEnd, lngStart, lngEnd, builder); + private BooleanBuilder locAndConditions(BigDecimal latStart, BigDecimal latEnd, BigDecimal lngStart, BigDecimal lngEnd, String category, List facility) { + BooleanBuilder builder = locationBuilder(latStart, latEnd, lngStart, lngEnd); builder.and(category == null ? null : store.category.eq(category)); if (facility != null && facility.size() > 0) { for (String fac : facility) { builder.and(facilityTF(fac)); } } + return builder; } }