프로젝트에 참고한 책: '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'

메인페이지에서 bookshelf 버튼을 눌러 /bookshelf 페이지로 이동했을 때 저장한 책들의 정보를 볼 수 있는 테이블을 만들고, db에서 정보를 가져오려 한다

 

먼저 templates 패키지에 bookshelf.mustache 파일을 생성해서 책 정보를 담을 수 있는 테이블을 만든다. 

해당 코드는 다음 링크에서 확인할 수 있다 

https://github.com/heyazoo1007/bookproject/blob/master/src/main/resources/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

코드는 다음 링크에서 확인가능하다

https://github.com/heyazoo1007/bookproject/blob/master/src/main/java/com/heyazoo1007/book/web/dto/PostsListResponseDto.java

 

이걸 통해 테이블도 반환하는 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()에 대해 공부해야할 것 같다 

 

+ Recent posts