Java

SpringBoot 공부 - CRUD (Read - 1)

Baetab 2023. 4. 25. 20:35

URL 맵핑

localhost:8080/articles/ {id} 로 조회가 가능하게 컨트롤러 코드 추가

서버를 실행시며 /articles/ id 를 넣으면 콘솔에 정상적으로 찍힌다

 

id 조회해 데이터 가져오기

@GetMapping("/articles/{id}")
    public String show(@PathVariable Long id){
        log.info("id = " +id);
        //1. id를 조회해 데이터 가져오기
        Article articleEntity = articleRepository.findById(id).orElse(null); //추가
        //2. 모델에 데이터 등록하기

        //3. 뷰페이지 반환하기

        return "";
    }

모델에 데이터 등록하기

@GetMapping("/articles/{id}")
    public String show(@PathVariable Long id, Model model){ //코드 추가
        log.info("id = " +id);
        //1. id를 조회해 데이터 가져오기
        Article articleEntity = articleRepository.findById(id).orElse(null);
        //2. 모델에 데이터 등록하기
        model.addAttribute("article",articleEntity); //코드 추가
        //3. 뷰페이지 반환하기

        return "";
    }

뷰페이지 반환하기

    @GetMapping("/articles/{id}")
    public String show(@PathVariable Long id, Model model){
        log.info("id = " +id);
        //1. id를 조회해 데이터 가져오기
        Article articleEntity = articleRepository.findById(id).orElse(null);
        //2. 모델에 데이터 등록하기
        model.addAttribute("article",articleEntity);
        //3. 뷰페이지 반환하기
        return "articles/show"; //코드 수정
    }

templates > 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>

    <tr> <!--확인용 코드-->
        <th>1</th>
        <td>제목 1111</td>
        <td>내용1111</td>
    </tr>
    </tbody>
</table>
{{>layouts/footer}}

정상적으로 표시된다 

 

DB 와 연결하여 내용을 표시 하려면 확인용 코드를 다음과 같이 수정한다

{{#article}}
    <tr>
        <th>{{id}}</th>
        <td>{{title}}</td>
        <td>{{content}}</td>
    </tr>
{{/article}}

 

entity > Article 에 롬복을 이용하여 기본 생성자를 만들어 준다

package com.example.firstproject.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.ToString;

@AllArgsConstructor
@NoArgsConstructor  //기본생성자
@ToString
@Entity //엔티티 선언
public class Article {
    @Id //엔티티의 대표값 지정
    @GeneratedValue //자동 생성 기능 추가(숫자가 자동으로 매겨짐)
    private Long id;
    @Column //title 필드 선언 , DB 테이블의 title 열과 연결됨
    private String title;
    @Column //content 필드 선언,  DB 테이블의 content 열과 연결
    private String content;
  
}

articles/new 에 내용을 작성해보고 articles/1 로 접속을해보면

 

오.. 출력된다 굿굿