id 1번을 조회할 때 /articles/1
id 2번을 조회할 때 /articles/2 을 접속하는 식으로 URL 요청을 받아보자
ArticleController 기존 코드 맨 아래에 @GetMapping()어노테이션 작성
이 때 URL은 "/articles/{id}"로 넣어 모델 변수로 받아온다

요청을 수행할 show()메서드 작성, 매개변수는 id로 받는데, 이때 @PathVariable 어노테이션을 작성하여 URL 요청으로 들어온 전달값을 컨트롤러의 매개변수로 가져오게 한다.

로깅 기능을 이용해 확인 -> log.info("id = " +id);
id를 조회해 DB에서 데이터 가져오기

findById메서드를 사용하여 엔티티의 id값을 기준으로 데이터를 찾는다
만약 해당 id값이 없으면 orElse(null) -> null값을 반환
Article articleEntity = articleRepository.findById(id).orElse(null);
가져온 데이터 모델에 등록하기

모델을 사용하기 위해 show()메서드의 매개변수에 model 객체를 추가해 받아온다.

이제 article 이라는 이름으로 articleEntity 객체 등록
model.addAttribute("article", articleEntity);
// article이라는 이름으로 articleEntity 객체를 등록한다
데이터를 보여줄 뷰 페이지 만들고 반환하기

articles/show 파일이 있다고 가정하고 뷰 페이지 반환하기
return "articles/show";
show.mustache 파일 생성
부트스트랩으로 table 넣어주기
필요없는 부분들은 삭제하고, 행 이름 Id, title, content로 수정해주기
이때 모델에 article이라는 이름으로 엔티티를 등록했었는데, 이 모델에 등록한 걸 써먹기 위해서 아래 코드와 같이 써준다.

이제 데이터를 new페이지에서 등록하고, id를 통해 페이지에 접속해보면? 코솔은 잘 나오는데
뷰 페이지는 에러가 뜸
기본 생성자 추가하기
Article 엔티티에 기본생성자가 없어서 뷰 페이지에서 에러가 난 것.
직접 코드로 작성해 주어도 되지만,
entity>Article 파일을 열어
@NoArgsConstructor 어노테이션으로 기본생성자를 추가해준다
이제 뷰 페이지 잘 나옴
단일 데이터가 아닌 데이터 목록을 조회해보자.
목록은 단일 데이터처럼 엔티티를 반환하지 않고 엔티티 묶음인 리스트를 반환한다.
목록 조회는 localhost:8080/articles 요청이 들어오면 처리하는 것으로 하자.
3단계로 나누어 index 메서드 코드를 작성하자
1. 모든 데이터 가져오기
리파지터리의 모든 데이터를 가져올 때는 findAll()이라는 메서드를 사용한다.
List<Article> articleEntityList = articleRepository.findAll();
// 아티클리포지토리.findAll로 데이터 가져오고, 이 수행 결과는 articleEntityList라는 이름으로 받는다. 이때 받아오는 타입은 List.
그런데 이 때 List부분에 오류가 난다. -> findAll의 반환 타입은 Iterable인데 작성한 반환 타입은 List라서 생기는 오류!!

이걸 해결하는 방법 3가지




2. 모델에 데이터 등록하기
index() 메서드의 매개변수로 model 객체를 받고, 모델에 등록한다.
model.addAttribute("articleList", articleEntityList);
3. 뷰 페이지 설정하기
return "articles/index";