[인프런 워밍업 클럽 스터디 1기 과제 #4] API 개발

qk·2024년 5월 7일

문제 1

FruitController.java

@PostMapping("/api/v1/fruit")
    public void saveFruit(@RequestBody FruitAddRequest request){
        String sql = "INSERT INTO fruit (name, warehousingDate, price) VALUES (?, ?, ?)";
        jdbcTemplate.update(sql, request.getName(), request.getWarehousingDate(), request.getPrice());
    }

📌한 걸음 더!

자바에서 정수를 다루는 가장 대표적인 두 가지 방법은 int와 long입니다. 두 가지 방법 중 위 API에서 long을 사용하는 이유는 무엇일까요?

int는 4바이트(32비트)를 사용하고,
long은 8바이트(64비트)를 사용한다. 그래서 long이 더 큰 범위의 정수를 저장하고 다룰 수 있다.

문제 2

FruitController.java

@PostMapping("/api/v1/fruit")
    public void saveFruit(@RequestBody FruitAddRequest request){
        String sql = "INSERT INTO fruit (name, warehousingDate, price) VALUES (?, ?, ?)";
        jdbcTemplate.update(sql, request.getName(), request.getWarehousingDate(), request.getPrice());
    }

변경 전변경 후id가 없는 경우

문제 3

FruitController.java

@GetMapping("/api/v1/fruit/stat")
    public FruitResponse saleState (@RequestParam String name) throws IllegalAccessException {
        String readSql = "SELECT * FROM fruit WHERE name = ?";
        boolean isFruitNotExist = jdbcTemplate.query(readSql , (rs, rowNum) -> 0, name).isEmpty();
        if(isFruitNotExist){
            throw new IllegalAccessException();
        }
        
        String salesSql = "SELECT COALESCE(SUM(price), 0) FROM fruit WHERE name = ? and sold = 'Y'";
        String notSalesSql = "SELECT COALESCE(SUM(price), 0) FROM fruit WHERE name = ? and sold = 'N'";

        long salesAmount = jdbcTemplate.queryForObject(salesSql,Integer.class, name);
        long notSalesAmount = jdbcTemplate.queryForObject(notSalesSql,Integer.class, name);

        return new FruitResponse(salesAmount, notSalesAmount);
    }

0개의 댓글