public class ArticleController {
@Autowired
private ArticleRepository articleRepository;
@GetMapping("/articles/{id}") // 데이터 조회 요청 접수
public String show(@PathVariable Long id) { // 매개변수로 id 받아오기
log.info("id = " + id); // id를 잘 받았는지 확인하는 로그 찍기
return "";
}
@GetMapping("/articles/{id}") // 데이터 조회 요청 접수
public String show(@PathVariable Long id, Model model) { // 매개변수로 id 받아오기
log.info("id = " + id); // id를 잘 받았는지 확인하는 로그 찍기
// 1. id를 조회하여 데이터 가져오기
Article articleEntity = articleRepository.findById(id).orElse(null);
// 2. 모델에 데이터 등록하기
model.addAttribute("article", articleEntity);
// 3. 뷰 페이지 반환하기
return "articles/show";
}
{{>layouts/header}}
<table class="table">
<thead>
<tr>
<th scope="col">Id</th> // 제목 행의 이름 수정
<th scope="col">Title</th>
<th scope="col">Content</th>
</tr>
</thead>
<tbody>
{{#article}}
<tr>
<th>{{id}}</th>
<td>{{title}}</td>
<td>{{content}}</td>
</tr>
{{/article}}
</tbody>
</table>
{{>layouts/footer}}
@AllArgsConstructor
@NoArgsConstructor // 기본 생성자 추가 어노테이션
@ToString
사용자가 입력한 데이터를 조회하려면 먼저 URL을 요청해야 한다. 실습에서는 /articles/id 형식으로 URL을 요청했다.
컨트롤러는 @GetMapping(”/articles/{id}")로 URL을 요청한다. 이 URL에 포함된 id를 show() 메소드의 매개변수로 받는데, 이때 매개변수 앞에 @PathVariable 어노테이션을 붙여야 URL의 id를 가져올 수 있다.
@GetMapping(”/articles/{id}")
public String show(6PathVariable Long id, Model model {
}
리포지토리에서 DB에 저장된 데이터를 id로 조회할 때 findById() 메소드를 사용한다. 특별히 조회된 데이터가 없는 경우도 처리해야 하므로, orElse() 메소드로 null을 반환한다.
Article articleEntity = articleRepository.findByld(id).orElse(null);
id로 DB에서 조회한 데이터는 모델에 article이라는 이름으로 등록한다.
model.addAttribute("article", articleEntity);