From fe3081e8598500817c90ccc05d61744e92dbd157 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Fri, 28 Mar 2025 11:09:41 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=80=EC=83=89=EC=96=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=95=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../localhost/service/localbordService.java | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index 9a51a01..a4838ca 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -55,16 +55,14 @@ public class localbordService { private final PasswordEncoder passwordEncoder; public List selectNotices(MapDto map) { - String keyword = map.getString("searchKeyword"); map.put("searchKeyword", null); List posts = boardMapper.selectNotices(map); enrichPostsWithAdditionalData(posts); - return filterPostsByKeyword(posts, keyword); + return posts; // 검색 없이 전체 공지사항 리스트 반환 } - public PageInfo selectGeneralPosts(MapDto map) { int page = map.getString("page") != null ? Integer.parseInt(map.getString("page")) : 1; int size = map.getString("size") != null ? Integer.parseInt(map.getString("size")) : 10; @@ -75,26 +73,32 @@ public class localbordService { } String keyword = map.getString("searchKeyword"); - map.put("searchKeyword", null); // MyBatis에 전달하지 않음 + boolean hasKeyword = keyword != null && !keyword.trim().isEmpty(); - // 넉넉히 많이 가져온 후 Java에서 필터링 - PageHelper.startPage(1, 1000); // 최대 1000개까지만 조회 + if (hasKeyword) { + // 전체 데이터를 가져와서 필터링 + map.put("searchKeyword", null); + List allPosts = boardMapper.selectGeneralPosts(map); + enrichPostsWithAdditionalData(allPosts); + + // 검색어 기반 필터링 + List filtered = filterPostsByKeyword(allPosts, keyword.trim()); + + // Java에서 수동 페이징 + int fromIndex = (page - 1) * size; + int toIndex = Math.min(fromIndex + size, filtered.size()); + List pagedList = fromIndex >= filtered.size() ? new ArrayList<>() : filtered.subList(fromIndex, toIndex); + + PageInfo pageInfo = new PageInfo<>(pagedList); + pageInfo.setTotal(filtered.size()); + return PageUtil.redefineNavigation(pageInfo); + } + + // 키워드 없으면 MyBatis에서 DB 페이징 처리 + PageHelper.startPage(page, size); List result = boardMapper.selectGeneralPosts(map); - enrichPostsWithAdditionalData(result); - - // 키워드 필터링 적용 - List filtered = filterPostsByKeyword(result, keyword); - - // 원하는 페이지만 잘라서 리턴 - int fromIndex = (page - 1) * size; - int toIndex = Math.min(fromIndex + size, filtered.size()); - List pageList = fromIndex >= filtered.size() ? new ArrayList<>() : filtered.subList(fromIndex, toIndex); - - PageInfo pageInfo = new PageInfo<>(pageList); - pageInfo.setTotal(filtered.size()); - - return PageUtil.redefineNavigation(pageInfo); + return PageUtil.redefineNavigation(new PageInfo<>(result)); } public void updateIncrementViewCount(Long boardId) {