From 896695d290d2c4c7a9c811845215e9b6c1944e22 Mon Sep 17 00:00:00 2001 From: Rebwon Date: Tue, 2 Nov 2021 20:38:08 +0900 Subject: [PATCH] refactor paging query no offset --- .../article/application/ArticleFacade.java | 5 +-- .../yam/app/article/domain/ArticleReader.java | 6 +-- .../MybatisArticleRepository.java | 9 +--- .../article/presentation/ArticleQueryApi.java | 6 +-- .../mapper/xml/AccountQueryMapper.xml | 2 +- .../mapper/xml/ArticleQueryMapper.xml | 41 ++++++++----------- .../mapper/xml/MemberQueryMapper.xml | 2 +- .../article/domain/FakeArticleRepository.java | 7 +--- .../infrastructure/ArticleReaderTest.java | 3 -- 9 files changed, 28 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/yam/app/article/application/ArticleFacade.java b/src/main/java/com/yam/app/article/application/ArticleFacade.java index 75bb6b3..64e10e7 100644 --- a/src/main/java/com/yam/app/article/application/ArticleFacade.java +++ b/src/main/java/com/yam/app/article/application/ArticleFacade.java @@ -32,9 +32,8 @@ public class ArticleFacade { } @Transactional(readOnly = true) - public List findAll(int offset, int limit) { - var idx = articleReader.findAll(); - return articleReader.findAllById(offset, limit, idx) + public List findAll(Long articleId, int pageSize) { + return articleReader.findAll(articleId, pageSize) .stream() .map(dto -> new ArticlePreviewResponse(dto.getId(), dto.getAuthorId(), dto.getTitle(), dto.getNickname(), dto.getImage(), dto.getCreatedAt(), dto.getModifiedAt(), diff --git a/src/main/java/com/yam/app/article/domain/ArticleReader.java b/src/main/java/com/yam/app/article/domain/ArticleReader.java index 72a7cb5..78e8ab2 100644 --- a/src/main/java/com/yam/app/article/domain/ArticleReader.java +++ b/src/main/java/com/yam/app/article/domain/ArticleReader.java @@ -12,8 +12,6 @@ public interface ArticleReader { boolean existsById(Long articleId); - List findAll(); - - List findAllById(@Param("offset") int offset, - @Param("limit") int limit, @Param("idx") List idx); + List findAll(@Param("articleId") Long articleId, + @Param("pageSize") int pageSize); } diff --git a/src/main/java/com/yam/app/article/infrastructure/MybatisArticleRepository.java b/src/main/java/com/yam/app/article/infrastructure/MybatisArticleRepository.java index c327b9f..e8dd472 100644 --- a/src/main/java/com/yam/app/article/infrastructure/MybatisArticleRepository.java +++ b/src/main/java/com/yam/app/article/infrastructure/MybatisArticleRepository.java @@ -43,13 +43,8 @@ public final class MybatisArticleRepository implements ArticleReader, ArticleRep } @Override - public List findAll() { - return template.getMapper(ArticleReader.class).findAll(); - } - - @Override - public List findAllById(int offset, int limit, List idx) { - return template.getMapper(ArticleReader.class).findAllById(offset, limit, idx); + public List findAll(Long articleId, int pageSize) { + return template.getMapper(ArticleReader.class).findAll(articleId, pageSize); } } diff --git a/src/main/java/com/yam/app/article/presentation/ArticleQueryApi.java b/src/main/java/com/yam/app/article/presentation/ArticleQueryApi.java index 4fa52c8..6e4b182 100644 --- a/src/main/java/com/yam/app/article/presentation/ArticleQueryApi.java +++ b/src/main/java/com/yam/app/article/presentation/ArticleQueryApi.java @@ -25,10 +25,10 @@ public final class ArticleQueryApi { @GetMapping("/api/articles/all") public ResponseEntity findAll( - @RequestParam(value = "offset", defaultValue = "0") int offset, - @RequestParam(value = "limit", defaultValue = "20") int limit) { + @RequestParam(value = "articleId", defaultValue = "0") Long articleId, + @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) { return ResponseEntity.ok( - ApiResult.success(articleFacade.findAll(offset, limit))); + ApiResult.success(articleFacade.findAll(articleId, pageSize))); } @GetMapping("/api/articles/{articleId}") diff --git a/src/main/resources/mapper/xml/AccountQueryMapper.xml b/src/main/resources/mapper/xml/AccountQueryMapper.xml index 4c8f2a5..1ecfcc5 100644 --- a/src/main/resources/mapper/xml/AccountQueryMapper.xml +++ b/src/main/resources/mapper/xml/AccountQueryMapper.xml @@ -4,7 +4,7 @@ diff --git a/src/main/resources/mapper/xml/ArticleQueryMapper.xml b/src/main/resources/mapper/xml/ArticleQueryMapper.xml index 26ef274..10f4cdc 100644 --- a/src/main/resources/mapper/xml/ArticleQueryMapper.xml +++ b/src/main/resources/mapper/xml/ArticleQueryMapper.xml @@ -3,34 +3,25 @@ - + SELECT a.id AS article_id, + a.title AS article_title, + a.status AS article_status, + a.member_id AS article_author_id, + a.created_at AS article_created_at, + a.modified_at AS article_modified_at, + m.nickname AS member_nickname, + m.image AS member_image FROM article a + INNER JOIN member m on a.member_id = m.id LEFT OUTER JOIN article_tag atg ON atg.article_id = a.id LEFT OUTER JOIN tag t ON t.id = atg.tag_id - - - - - - - diff --git a/src/main/resources/mapper/xml/MemberQueryMapper.xml b/src/main/resources/mapper/xml/MemberQueryMapper.xml index 06a3b3c..62c1786 100644 --- a/src/main/resources/mapper/xml/MemberQueryMapper.xml +++ b/src/main/resources/mapper/xml/MemberQueryMapper.xml @@ -14,7 +14,7 @@ diff --git a/src/test/java/com/yam/app/article/domain/FakeArticleRepository.java b/src/test/java/com/yam/app/article/domain/FakeArticleRepository.java index f9a9aaf..232d5b8 100644 --- a/src/test/java/com/yam/app/article/domain/FakeArticleRepository.java +++ b/src/test/java/com/yam/app/article/domain/FakeArticleRepository.java @@ -38,12 +38,7 @@ public final class FakeArticleRepository implements ArticleRepository, ArticleRe } @Override - public List findAll() { - throw new UnsupportedOperationException(); - } - - @Override - public List findAllById(int offset, int limit, List idx) { + public List findAll(Long articleId, int pageSize) { throw new UnsupportedOperationException(); } } diff --git a/src/test/java/com/yam/app/article/infrastructure/ArticleReaderTest.java b/src/test/java/com/yam/app/article/infrastructure/ArticleReaderTest.java index 4836909..98381e2 100644 --- a/src/test/java/com/yam/app/article/infrastructure/ArticleReaderTest.java +++ b/src/test/java/com/yam/app/article/infrastructure/ArticleReaderTest.java @@ -21,9 +21,6 @@ public final class ArticleReaderTest { @Test void articlePaginationQueryTests() { - List idx = articleReader.findAll(); - List dtos = articleReader.findAllById(1, 10, idx); - assertThat(dtos.size()).isEqualTo(10); } }