검색 기능

박영준·2023년 7월 25일
0

Spring

목록 보기
48/58

뉴닉 클론코딩을 한 데이터를 바탕으로 검색 기능을 구현해보았다.
참고: Jsoup 크롤링

전체 조회를 통해, DB 에 기사글이 저장된 상태다.

1. controller

	// 검색 기능
    @GetMapping("/api/articles/search")
    public ApiResponseDto searchKeyword(@RequestParam("keyword") String keyword) {
        return new ApiResponseDto(200, "OK", crawlingArticle.searchKeyword(keyword));
    }
  • @RequestParam 을 이용했고, 주소창에는 api/articles/search?keyword=검색키워드 이런 형태로 나오게 된다.

2. CrawlingArticle

	// 검색 기능
    public List<ArticleListResponseDto> searchKeyword(String keyword) {
	//        List<Article> articleList = articleRepository.findByTitleContaining(keyword);     // title 에서만 검색
        List<Article> articleList = articleRepository.findByTitleContainingOrContentContaining(keyword, keyword);       // title & content 에서 검색

        List<ArticleListResponseDto> articleResponseDtoList = new ArrayList<>();

        for (Article article : articleList) {
            articleResponseDtoList.add(new ArticleListResponseDto(article));
        }

        return articleResponseDtoList;
    }

Containing

  • Containing 을 붙여주면 SQL 에서의 Like 검색이 가능해진다. 즉, %{keyword}%
  • title 컬럼 또는 content 컬럼 중 하나라도 해당 keyword 를 가지고 있을 경우, 검색이 가능하다.
    • 두 컬럼은 Or 을 통해 이어붙인다.

3. ArticleRepository

@Repository
public interface ArticleRepository extends JpaRepository<Article, String> {
//    List<Article> findByTitleContaining(String keyword);     // title 에서만 검색

    List<Article> findByTitleContainingOrContentContaining(String title, String content);       // title & content 에서 검색
    
    Optional<Article> findById(Long articleId);
}

참고: [Spring Boot] Spring Data JPA의 사용법과 사용이유, 예시
참고: Spring Boot JPA 게시판 검색 기능 & 검색 페이징 구현

profile
개발자로 거듭나기!

0개의 댓글