
📂 controler.java
// 게시글 전체 조회 - 검색키워드가 포함된 게시글 조회
// board/post/search?keyword="의연 최고"
@GetMapping("/posts/search")
public PagedModel<PostResponse> getPostByKeyword(@RequestParam String keyword,
@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "size", defaultValue = "15") int size){
if(size > 100){ size = 100; }
Pageable pageable = PageRequest.of(page-1, size, Sort.by("createdAt").descending());
return postService.getPostByKeyword(keyword, pageable);
}
📂 service.java
// 게시글 전체 조회 - 검색 키워드로 게시글 조회
public PagedModel<PostResponse> getPostByKeyword(String keyword, Pageable pageable){
Page<PostResponse> postResponses = postRepository.findByKeyword(keyword, pageable)
.map(PostResponse::new);
return new PagedModel<>(postResponses);
}
📂 repository.java
@Query("SELECT p FROM Post p WHERE p.title LIKE %:keyword% OR p.content LIKE %:keyword%")
Page<Post> findByKeyword(@Param("keyword") String keyword, Pageable pageable);
📂 controler.java
// 게시글 전체 조회 - 검색키워드가 포함된 제목의 게시글 조회
// board/post/search/title?keyword="의연 최고"
@GetMapping("/posts/search/title")
public PagedModel<PostResponse> getPostByTitle(@RequestParam String keyword,
@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "size", defaultValue = "15") int size){
if(size > 100){ size = 100; }
Pageable pageable = PageRequest.of(page-1, size, Sort.by("createdAt").descending());
return postService.getPostByTitle(keyword, pageable);
}
📂 service.java
// 게시글 전체 조회 - 제목에 검색 키워드가 포함된 게시글 조회
public PagedModel<PostResponse> getPostByTitle(String keyword, Pageable pageable){
Page<PostResponse> postResponses = postRepository.findByTitle(keyword, pageable)
.map(PostResponse::new);
return new PagedModel<>(postResponses);
}
📂 repository.java
@Query("SELECT p FROM Post p WHERE p.title LIKE %:keyword%")
Page<Post> findByTitle(@Param("keyword") String keyword, Pageable pageable);
이유는 모르겠으나, 그냥 느낌적으로 코드가 일단 진짜 개띠겁다 꿀밤 먹이고 싶음
1. API 개띠꺼움
API가 너무 띠껍다.board/post/search?keyword="검색키워드"board/post/search/title?keyword="검색키워드"page, size, sort)까지 붙으면? 우..우웁.. 우웩🌈 2. 페이지네이션 개띠꺼움
if(size > 100){ size = 100; }
3. JPQL 개띠거움
@Query("SELECT p FROM Post p WHERE p.title LIKE %:keyword% OR p.content LIKE %:keyword%")
Page<Post> findByKeyword(@Param("keyword") String keyword, Pageable pageable);
@Query("SELECT p FROM Post p WHERE p.title LIKE %:keyword%")
Page<Post> findByTitle(@Param("keyword") String keyword, Pageable pageable);
진짜 시급하다 뭔가 단단히 잘못된 느낌? 코드가 그냥 🌈졸💖라 구😊려🍀
리팩토링 하면서 검색 기능 관련된 포스트는 새로 작성할 예정 ! ! !
퍼가요~