

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이 더 큰 범위의 정수를 저장하고 다룰 수 있다.

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가 없는 경우


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);
}
