티스토리 뷰

검색어 기반 API

1. SearchController

   @GetMapping("/search")
    public List<CourseSearchResponseDto> getSearchCourse(@RequestParam("keyword") String keyword) {
        List<Course> searchCourse = courseListService.getSearchCourse(keyword);

        // 각 강의 정보를 CourseSearchResponseDto로 변환하여 리스트에 추가
        List<CourseSearchResponseDto> responseDtoList = searchCourse.stream()
                .map(course -> new CourseSearchResponseDto(course.getTitle(), course.getTags(), course.getUser().getUserName()))
                .collect(Collectors.toList());

        return responseDtoList;
    }

 

2. SearchService

    public List<Course> getSearchCourse(String keyword) {
        List<Course> searchResult = courseRepository.findByKeyword("%" + keyword + "%");

        log.info("searchResult={}", searchResult);

        for (Course course : searchResult) {
            String userName = course.getUser().getUserName();
            System.out.println("courseName = " + course.getTitle());
            System.out.println("courseTags = " + course.getTags());
            System.out.println("userName = " + userName);
            System.out.println("\n");
        }
        return searchResult;

 

3. SearchRepository

public interface CourseRepository extends JpaRepository<Course, Long> {

    @Query("SELECT c FROM Course c " +
            "JOIN c.user u " +
            "WHERE LOWER(c.title) LIKE LOWER(concat('%', :keyword, '%')) " +
            "   OR LOWER(c.tags) LIKE LOWER(concat('%', :keyword, '%')) " +
            "   OR LOWER(u.userName) LIKE LOWER(concat('%', :keyword, '%'))")
    List<Course> findByKeyword(@Param("keyword") String keyword);
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함