티스토리 뷰
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 뷰를 반환한다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 2. 게시판 서비스 만들기 - 게시글 댓글 구현 (0) | 2023.09.12 |
---|---|
[Java Project] Part 2. 게시판 서비스 만들기 - 해시태그 검색 구현 (0) | 2023.09.11 |
[Java Project] Part 2. 게시판 서비스 만들기 - 게시판 정렬 (0) | 2023.09.09 |
[Java Project] Part 2. 게시판 서비스 만들기 - 게시판 페이징 구현 (0) | 2023.09.08 |
[Java Project] Part 2. 게시판 서비스 만들기 - 게시글 및 로그인 페이지 기능 구현 (0) | 2023.09.07 |
댓글