본문 바로가기

Spring Boot

[튜토리얼] IntelliJ로 CRUD 구현하기

728x90

헬로월드가 실습생이 프레임워크를 알고있는지 체크하는 항목이였다면,

CRUD는 프레임워크를 정말 쓸줄 아는지 확인할 수 있는 방법이라고 생각합니다.

 

기본적인 프로젝트 세팅은 앞선 글 (https://userinsight.tistory.com/19)을 참고해주세요.

 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

pom.xml에 의존성을 추가해줍니다. (간단한 구현을 위해 h2 데이터베이스를 사용합니다)

 

 

package com.example.springboottutorial;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String firstName;
    private String lastName;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

Customer라는 엔티티를 추가해줍니다.

그런데, 반복되는 getter, setter 메서드가 걸립니다. 그래서 저희는 Lombok이라는 플러그인을 사용할겁니다.

(https://projectlombok.org/setup/intellij)

 

 

package com.example.springboottutorial;

import org.springframework.data.repository.CrudRepository;

public interface CustomerRepository extends CrudRepository<Customer, Integer> {

    Customer findCustomerById(Integer id);
}

CustomerRepository를 추가해줍니다. DB에 접근해서 역할을 수행합니다. (CRUD)

 

 

package com.example.springboottutorial;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class DemoController {

    @Autowired
    private CustomerRepository customerRepository;

    @PostMapping("/add")
    public String addCustomer(@RequestParam String first, @RequestParam String last) {
        Customer customer = new Customer();
        customer.setFirstName(first);
        customer.setLastName(last);
        customerRepository.save(customer);
        return "Added new customer to repo!";
    }

    @GetMapping("/list")
    public Iterable<Customer> getCustomers() {
        return customerRepository.findAll();
    }

    @GetMapping("/find/{id}")
    public Customer findCustomerById(@PathVariable Integer id) {
        return customerRepository.findCustomerById(id);
    }
}

DemoController를 생성해줍니다.

화면에서 사용자의 동작을 읽어 위에서 생성한 Repository의 메서드를 호출해주는 역할입니다.

 

 

<!DOCTYPE HTML>
<html>
    <head>
        <title>You first Spring application</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <form action="/add" method="POST">
            <p>Let's add a customer.</p>

            <div>
                <label for="firstName">First name:</label>
                <input name="first" id="firstName" value="Homer">
            </div>
            <div>
                <label for="lastName">Last name:</label>
                <input name="last" id="lastName" value="Simpson">
            </div>
            <div>
                <button>Add customer</button>
            </div>
        </form>

        <form action="/list" method="GET">
            <button>List customers</button>
        </form>
    </body>
</html>

index.html 파일을 위와 같이 수정해줍니다.

 

 

실행하면 위와같은 화면을 볼 수 있습니다.

CRUD의 CR은 완료되었고, 이를 응용하여 UD도 작성해보시기 바랍니다.

 

 

참고 : https://www.jetbrains.com/help/idea/spring-support-tutorial.html

728x90