DTO
- Data Transfer Object란 의미로 폼에서 전달받은 데이터를 객체로 변환하는것.
- dto로 받은 데이터는 최종적으로 데이터베이스로 저장.
1. 데이터를 form을 통해 Post 요청으로 데이터를 요청.
- 폼 데이터를 전송 받아 DTO 객체에 담아야한다. -> post 요청
- 폼 데이터를 DTO에 담기 -> 컨트롤러에 매개 변수로 담는다.
- 폼과 DTO 필드를 연결하자 -> 타임리프를 통해 mapping
- DTO를 데이터베이스에 저장하자 -> DTO를 엔티티로 변환하자.
- repository로 엔티티를 db에 저장하자 -> repository.save(Entity);
// foodcreate_form.html
<form class="container" action="/api/food" method="post">
<div class="mb-3">
<label for="foodName" class="form-label">식품명</label>
<input type="text" name="foodName" id="foodName" class="form-control" placeholder="ex) 버터 치킨 카레">
</div>
<div class="mb-3">
<label for="createDate" class="form-label">유통 기한</label>
<input type="text" name="createDate" id="createDate" class="form-control" placeholder="ex) 25/01/01">
</div>
</form>
DTO
public class FoodFormDto{
private String foodName;
private String createDate;
public foodFormDto(String foodName,String createDate){
this.foodName = foodName;
this.createDate = createDate;
}
public Food toEntity(){
return new food(null,foodName,createDate);
}
@Controller
public class foodcontroller(FoodFormDto foodFormDto){
@Gemapping("/api/food")
public String create(FoodFormDto foodFormDto){
Food food = foodFormDto.toEntity();
this.foodrepository.save(food);
}
@Entity
public class Food{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 50)
private String foodname;
private String createDate;
}
public Food(String foodname,String createDate){
this.foodname = foodname;
this.createDate = createDate;
}