티스토리 뷰

728x90
반응형

1. 게시판 해시태그 검색 구현

(1) 테스트

  • 검색어 없이 해시태그 검색을 하면 빈페이지를 반환하는 테스트를 짠다.
    • searchType은 이제 해시태그로 고정되어 있기 때문에 생략가능하다.
    • 해시태그를 통한 게시글 검색을 할 때, null값이 들어가도록 구성한다.
  • 검색어를 넣었을 때는 검색된 게시판 페이지를 반환하는 테스트를 짠다.
    • 임의의 hashtag를 작성하고, 이전에 만들어 두었던 findByHashtag 메서드를 사용해 articleRepository를 검색한다.
    • 해시태그가 여러 개인 경우, null 값인 경우, 중복된 경우도 있을 것이기에 unique 한 값들만 뽑아서 리스트로 보여주는 화면을 구성한다.
  • Unique한 해시태그를 가져오는 메서드를 통해 기대한 해시태그가 나오는지 테스트를 짠다.

 

(2) 구현

  • Alt+enter > create method : 해당 메서드를 구현할 장소로 쉽게 이동할 수 있다.
  • Repository > querydsl 디렉토리를 생성한다.
  • ArticleRepositoryCustom 클래스를 생성한다.
    • 이 아래 findAllDistincHashtags 메서드를 생성한다.
  • querydsl > ArticleRepositoryCustomImpl 클래스를 생성한다.
    • QuerydslRepositorySupport 를 상속받고, ArticleRepositoryCustom 를 implement 해준다.
    • ctrl+n > generate > constructor를 선택하면 자동으로 필요한 것이 만들어진다.
      • super(Article.class)를 작성해 줌으로써 Article 도메인 즉 Article repository와 연결된다는 것을 명시해준다.
    • ctrl+n > generate > Implement Methods를 통해 findAllDistincHashtags 메서드를 불러와 구현한다.
      • 자동생성한 Q오브젝트를 활용하여 dsl을 구현할 수 있다.
      • JPQLQuery 인터페이스를 사용하여 query를 작성한다.
from(article)
    .distinct()
    .select(article.hashtag)
    .where(article.hastag.isNotNull())
    .fetch();
  • ArticleService
    • getHashtags 메서드는 방금 생성한 findAllDistincHashtags 메서드를 통해 해시태그들을 받아 바로 반환해주면 된다.
    • searchArticlesViaHashtag 메서드에는 @Transacctional(readOnly = true) 읽기 전용 어노테이션을 추가한다.
      • 만약 검색어가 없다면 Page.empty(pageable)을 반환한다.
      • 만약 검색어가 있다면 findByHashtag 메서드를 실행하고, ArticleDto로 변환하여 반환한다.

 

(3) 컨트롤러 구현

  • ArticleController에 searchHashtag 메서드를 생성하고,
  • @GetMapping(“/search-hashtag”) 어노테이션을 통해 해시태그 검색 페이지를 매핑한다.
    • 입력되는 파라미터로는 searchValue와 pageable, map이 있다.
    • Articles/search-hashtag 뷰를 반환한다.

 


 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완

728x90
반응형
댓글