회원의 강좌 목록을 구현할 것이다.
- 강좌 목록 페이지 구현
- 관리자 페이지에서 나오는 목록 리스트와 회원 페이지에서 나오는 목록 리스트는 같을 수 없으므로 회원 전용 페이지 메소드를 Service에 frontList로 따로 생성
- Impl에서 frontList를 생성한 후 CourseController에서 사용
@Override
public List<CourseDto> frontList(CourseParam courseParam) {
List<Course> courseList = courseRepository.findAll();
return CourseDto.of(courseList);
}
□ 카테고리 보여주게 목록 설정
- 카테고리 목록을 가져오기 위해서 CategoryMapper 인터페이스 생성하여 select 메소드 생성
- resources/mybatis 에 해당하는 CategoryMapper.xml 생성하여 select문 추가
select c.*, (select count(*) from course where category_id = c.id) as course_count
from category c where using_yn = 1 order by sort_value desc
- course_count라는 추가 컬럼 CategoryDto에 추가
- 이것을 사용할 서비스가 필요하므로 frontList 메소드 추가 후 구현
- 컨트롤러에서 frontList를 사용하여 카테고리 정보들을 받아와 index에 넘겨줌
- 카테고리명 출력 부분과 카테고리명들의 아이디 값을 매개로 그 페이지로 넘어가는 부분 추가
- <a href="?"></a>는 현재 페이지 다시 불러오는 것
- CourseController에서 카테고리 아이디 값을 가져올 수 있도록 courseParam에 categoryId 필드 추가
- 전체가 아니면 카테고리ID로 카테고리를 찾아야하므로 repository에 findByCategoryId 추가
- frontList 수정
@Override
public List<CourseDto> frontList(CourseParam parameter) {
// 전체를 가져올 때
if(parameter.getCategoryId() < 1) {
List<Course> courseList = courseRepository.findAll();
return CourseDto.of(courseList);
}
// 하나만 찾을 때
Optional<List<Course>> optionalCourses = courseRepository.findByCategoryId(parameter.getCategoryId());
if(optionalCourses.isPresent()) {
return CourseDto.of(optionalCourses.get());
}
// 위와 똑같은 기능
//return courseRepository.findByCategoryId(parameter.getCategoryId()).map(CourseDto::of).orElse(null);
return null;
}
- 카테고리별 개수 옆에 추가
int courseTotalCount = 0;
if(categoryList != null) {
for(CategoryDto x : categoryList) {
courseTotalCount += x.getCourseCount();
}
}
model.addAttribute("courseTotalCount", courseTotalCount);
'프로젝트 > 학습관리시스템(LMS)' 카테고리의 다른 글
강좌 신청 구현 (0) | 2022.11.15 |
---|---|
강좌 상세 정보 구현 (0) | 2022.11.15 |
강좌 상세 정보 등록 및 수정 (0) | 2022.11.13 |
강좌 목록 : 강좌 기능 심플화 등록 및 심플화 목록 구현 (0) | 2022.11.13 |
강좌 카테고리 수정, 삭제, 정렬 (0) | 2022.11.13 |