프로젝트에 참고한 책: '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'
메인페이지에서 bookshelf 버튼을 눌러 /bookshelf 페이지로 이동했을 때 저장한 책들의 정보를 볼 수 있는 테이블을 만들고, db에서 정보를 가져오려 한다
먼저 templates 패키지에 bookshelf.mustache 파일을 생성해서 책 정보를 담을 수 있는 테이블을 만든다.
해당 코드는 다음 링크에서 확인할 수 있다
GitHub - heyazoo1007/bookproject
Contribute to heyazoo1007/bookproject development by creating an account on GitHub.
github.com
책 정보로 테이블을 형성하고, db에 저장된 책 정보를 보여준다.
화면만 만들면 저장된 책 정보를 볼 수 없으므로 indexcontroller와 service, repository에도 코드를 추가해준다
그리고 리스트를 반환하는 PostsListResponseDto 클래스도 web/dto 패키지에 생성한다
-PostsRepository
리포지토리에 정보를 Asc(오름차순)으로 불러오는 메소드를 추가해준다
@Query 어노테이션으로 쿼리 불러온다
처음으로 접했던 내용이었다
리스트에서 1번이 가장 위에 있게 하고 싶어서 Desc가 아닌 Asc로 설정했다
-PostsListResponseDto
코드는 다음 링크에서 확인가능하다
이걸 통해 테이블도 반환하는 dto를 따로 생성해야하는 것을 배웠다
-PostsService
.map(PostsListResponseDto:: new)는 다음 식과 동일하다
.map(posts -> new PostsListResponseDto(posts))
postRepository 결과로 넘어온 Posts의 Stream을 map을 통해 PostsListResponseDto로 변환 후 List로 변환하는 메소드이다
-stream().map(): 각각의 item을 변경하여 새로운 컨텐츠를 생성하는 기능이다. stream.filter와 마찬가지로 map으로 어떻게 아이템을 변경시킬지 함수로 정의를 한다
-collect(Collectors.toLists()
Collectors: stream을 일반적인 List,set 등으로 변경시키는 stream 메소드이다.
-IndexController
model을 파라미터로 받아서 posts 생성 후 bookshelf.mustache에 넘기면 posts의 정보들을 테이블에 나타낸다
bookshelf.mustache에 보면 {{posts.#}}인 값들이 있는데 이게 디비에서 받은 정보들을 컬럼기준으로 나타내는 것 같다(?)
model.addAttribute()에 대해 공부해야할 것 같다
'개인프로젝트 > My Book' 카테고리의 다른 글
[개인프로젝트 #1] 4. 게시글 수정 View 생성 (0) | 2022.01.27 |
---|---|
[개인프로젝트 #1] 4. 게시글 저장 View 생성 (0) | 2022.01.27 |
[개인프로젝트#1] 4. View 생성하기_메인 (0) | 2022.01.26 |
[개인프로젝트#1] 3. JPA Auditing으로 생성/수정 시간 자동화 (0) | 2022.01.26 |
[개인프로젝트#1] 3. 수정 API 만들기 (0) | 2022.01.26 |