데이터 조회 과정
- 사용자가 데이터를 조회해달라고 웹 페이지에서 URL 요청을 보냄
- 서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달
- 리파지터리는 정보를 가지고 DB에 데이터 조회를 요청
- DB는 해당 대이테를 찾아 이를 엔티티로 변환
- 반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달
- 최종적으로 결과 뷰 페이지가 완성되어 사용자의 화면에 출력
단일 데이터 조회하기(실제 과정)
- URL 요청하기 (/articles/id 로 요청)
- 컨트롤러는 @GetMapping("/articles/{id})로 URL받기
- URL의 id가 포함된 메서드 생성
- 메서드로 URL의 id를 매개변수로 받기 위해 매개변수 앞에 @PathVariable 어노테이션 붙이기
- 리파지터리에서 DB에 저장된 데이터를 조회하기 위해 리파지터리.fidById()사용
- 조회된 데이터가 없을 경우를 대비해 .orElse() 메서드로 데이터가 없을 경우 null반환하도록 함
- id로 DB에서 조회한 데이터를 모델에 저장(article이란 이름으로 저장하였음)
- 뷰페이지(mustache)로 이동하여 뷰 페이지 설정
- 데이터를 사용하는 영역에 {{#모델저장이름}}{{/모델저장이름}} 을 씌워줌
controller 코드
@GetMapping("/articles/{id}")
public String show(@PathVariable Long id, Model model) {
log.info("id = " + id);
Article articleEntity = articleRepository.findById(id).orElse(null);
model.addAttribute("article",articleEntity);
return "articles/show";
}
mustache 코드
{{>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}}
'게시판 만들기(스프링 부트3, 나도코딩 스터디) > 5장. 게시글 읽기 : Read' 카테고리의 다른 글
다운캐스팅 (Spring Boot3 / Java / Intellij) (0) | 2023.11.24 |
---|---|
5.3 데이터 목록 조회하기(게시판 만들기 / 길벗 코딩 자율학습단) (2) | 2023.11.24 |