오늘 문제는 대부분이 강의의 연장선이라, 코드 위주로만 작성하려고 한다.

Untitled

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먼저 작성했다. 강의에서 진행한 유저 정보 저장과 유사하므로 설명은 넘어가겠다!

이제 한 번 실행해보자!

Untitled

200OK 결과가 나왔으므로, DB에도 제대로 저장되었는지 확인해보자.

select * from fruit_info;