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
'Spring Boot' 카테고리의 다른 글
[Spring Boot] Optional의 orElse(), orElseGet() 알고 쓰기 (0) | 2022.08.11 |
---|---|
[Spring Boot] WebSecurityConfigurerAdapter Deprecated 대처 (1) | 2022.08.10 |
[튜토리얼] IntelliJ로 Hello World 찍기 (0) | 2022.08.08 |
[아이디어] 복합키(Composite-key), 쉽게 CRUD 해보자 (0) | 2022.08.08 |
[Jackson] 순환참조 해결방법 (0) | 2022.08.05 |