스프링 부트, 입문!

준비중..

스프링 부트, 입문!

기본 게시판 만들기!

11 목록 가져오기

# 목록 가져오기 ## 미션 --- 게시글을 작성하고, ![클라우드스터딩-스프링부트-데이터-목록-글쓰기](https://i.imgur.com/XlJFkXa.png) 그 목록을 조회하시오. ![클라우드스터딩-스프링부트-데이터-목록-글쓰기](https://i.imgur.com/l0iN7Bv.png) ## 개념 --- #### ⭐️ 진행 흐름 각 객체의 유기적 동작. 이를 통해 데이터 목록이 조회된다. 컨트롤러는 전체적인 요청을 받아 전체적 명령을, 리파지터리는 DB에서 데이터를 가져오고, 모델은 뷰 페이지로 데이터를 전달한다. 전달된 데이터와 결합한 뷰 페이지. 이는 클라이언트에서 결과 화면으로 나타난다. ~~패스트푸드점에 카운터/조리/청소 점원이 따로 있는 것처럼~~ ![클라우드스터딩-스프링-부트-데이터-조회-흐름-리파지터리-모델](https://i.imgur.com/HL2qrHS.png) #### ⭐️ 모델 MVC 패턴 중 하나인 모델. 이는 뷰 페이지에서 사용할 데이터를 관리한다. ~~DB와 소통하는 리파지터리와 다름 주의!~~ ``` // 데이터 articleList를 저장! 뷰에서는 "articles"란 이름으로 사용 가능! model.addAttributes("articles", articleList); ``` #### ⭐️ 머스테치 문법, 데이터 사용 머스테치를 사용하여, 모델 데이터를 사용할 수 있다. ``` <!-- 모델 데이터 aaa를 사용 --> {{#articles}} ... {{/articles}} ``` ## 튜토리얼 --- #### ⭐️ 컨트롤러 1) 코드 추가 및 변경: "controller/ArticleController" ``` @Slf4j @RequiredArgsConstructor // final 필드 값을 알아서 가져옴! (@autowired 대체!) @Controller public class ArticleController { // 리파지터리 객체 자동 삽입 됨! 위에서 @RequiredArgsConstructor 했음! private final ArticleRepository articleRepository; @GetMapping("/articles") public String index(Model model) { // 뷰 페이지로 데이터 전달을 위한 Model 객체 자동 삽입 됨! // 모든 Article을 가져옴 // Iterable 인터페이스는 ArrayList의 부모 인터페이스 Iterable<Article> articleList = articleRepository.findAll(); // 뷰 페이지로 articles 전달! model.addAttribute("articles", articleList); // 뷰 페이지 설정 return "articles/index"; } ... } ``` #### ⭐️ 뷰 페이지 2) 테이블 추가: "articles/index.mustache" ``` {{>layouts/header}} <!-- jumbotron --> <div class="jumbotron"> <h1>Article 목록</h1> <hr> <p>articles/index.mustache</p> <a href="/articles/new" class="btn btn-primary">글쓰기</a> </div> <!-- articles table --> <table class="table table-hover"> <thead> <tr> <th>#</th> <th>제목</th> </tr> </thead> <tbody> <!-- 모델에서 보내준 articles를 사용! 데이터가 여러개라면 반복 출력 됨! https://taegon.kim/archives/4910 --> {{#articles}} <tr> <td>{{id}}</td> <!-- id 출력 --> <td>{{title}}</td> <!-- title 출력 --> </tr> {{/articles}} </tbody> </table> {{>layouts/footer}} ``` #### ⭐️ 결과 확인 3) 글쓰기 ![클라우드스터딩-스프링부트-데이터-목록-글쓰기](https://i.imgur.com/XlJFkXa.png) 4) 목록 조회 ![클라우드스터딩-스프링부트-데이터-목록-조회-확인](https://i.imgur.com/l0iN7Bv.png) 5) DB 조회 ![클라우드스터딩-스프링부트-데이터-목록-데이터베이스-조회](https://i.imgur.com/41A6XNz.png) ## 훈련하기 --- - 매번 여러 Article을 작성하기가 쉽지 않다. 이를 해결하기 위한 기능을 url "localhost:8080/init"에 구현하시오. ![클라우드스터딩-스프링부트-더미-데이터-생성](https://i.imgur.com/eUUes3l.png) - 작성한 프로젝트 코드를 저장(commit) 하고, 깃허브에 업로드(push) 하시오. ## 면접 준비 --- - 게시글 목록 조회 과정 중, 각 객체의 역할은? - Iterable 인터페이스와 ArrayList 클래스의 관계?