티스토리 뷰
검색어 기반 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);
}
'SeSAC_도봉캠퍼스 > 새싹_도봉캠퍼스_프로젝트 4' 카테고리의 다른 글
2024.04.18_프로젝트 4 (17 일차) (0) | 2024.04.18 |
---|---|
2024.04.17_프로젝트 4 (16 일차) (0) | 2024.04.18 |
2024.04.04_프로젝트 4 (3 일차) (0) | 2024.04.04 |
2024.04.03_프로젝트 4 (2 일차) (0) | 2024.04.03 |
2024.04.02_프로젝트 4 시작 (1 일차) (0) | 2024.04.03 |