오늘 문제는 대부분이 강의의 연장선이라, 코드 위주로만 작성하려고 한다.
db연결 설정 같은 경우는, 강의와 동일하므로 작성하지 않는다.
우선 db와 table 생성부터 해보자.
create database fruit_store;
use fruit_store;
create table fruit_info (
id bigint auto_increment,
name varchar(20) not null,
warehousing_date date not null comment '입고일',
price bigint not null,
is_sold enum('Y','N') default 'N',
primary key (id)
);
처음에는 매출 관리용 테이블을 따로 분리할까 고민했지만, 강의 내용 상 아직 join 등의 내용을 나가지 않아서 한 테이블로 처리하기로 했다.
판매 여부는 enum 타입으로 설정하였으며, 입고할 때는 당연히 판매되지 않은 상태일테니 기본값을 N으로 설정했다.
desc fruit_info;
생성된 테이블 정보
public class StoreFruitRequest {
private String name;
private LocalDate warehousingDate;
private Long price;
public String getName() {
return name;
}
public LocalDate getWarehousingDate() {
return warehousingDate;
}
public Long getPrice() {
return price;
}
}
private final JdbcTemplate jdbcTemplate;
public FruitController(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
//1
@PostMapping("/fruit")
public void storeFruit(@RequestBody StoreFruitRequest request) {
String sql = "insert into fruit_info (name, warehousing_date, price) values (?, ?, ?)";
jdbcTemplate.update(sql, request.getName(), request.getWarehousingDate(), request.getPrice());
}
JDBCTemplate을 먼저 주입한 후 과일 저장 API먼저 작성했다. 강의에서 진행한 유저 정보 저장과 유사하므로 설명은 넘어가겠다!
이제 한 번 실행해보자!
200OK 결과가 나왔으므로, DB에도 제대로 저장되었는지 확인해보자.
select * from fruit_info;