반응형
Vue로부터 Stirng으로 받아온 날짜 파라미터를 변환
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) 어노테이션을 사용하면, Spring이 String을 LocalDate로 자동 변환해 줍니다.
1. Spring이 변환하는 과정
@GetMapping("/api/data")
public List<EntityName> getData(
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate targetDate
) {
System.out.println("Received targetDate: " + targetDate);
}
클라이언트에서 YYYY-MM-DD 형식의 문자열을 전송:
GET /api/data?targetDate=2025-03-10
➡ Spring이 String → LocalDate (2025-03-10)로 자동 변환!
2. Spring 내부 동작
Spring이 변환하는 과정:
- targetDate는 원래 String 타입의 요청 파라미터 ("2025-03-10")로 들어옴.
- @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) 덕분에 Spring이 이를 **LocalDate.parse("2025-03-10")**처럼 자동 변환.
- 컨트롤러 메서드에서는 LocalDate 타입으로 사용 가능.
즉, 프론트에서 YYYY-MM-DD 문자열을 보내도, 백엔드에서는 LocalDate로 바로 받을 수 있는 것! 🎯
3. LocalDateTime 변환까지 한번에
@GetMapping("/api/data")
public List<EntityName> getData(
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate targetDate
) {
LocalDateTime startDate = targetDate.atStartOfDay(); // 00:00:00
LocalDateTime endDate = targetDate.atTime(LocalTime.MAX); // 23:59:59.999999999
return repository.findByClientCodeAndTimeAtBetween("C123", startDate, endDate);
}
➡ 조회 범위를 00:00:00 ~ 23:59:59.999999999로 변환하여 JPA에서 사용
결론
📌 Vue → YYYY-MM-DD 문자열로 보냄
📌 Spring → @DateTimeFormat 덕분에 자동으로 LocalDate 변환
📌 필요하면 LocalDateTime으로 변환하여 JPA 조회
✔ 별도 변환 코드 없이 깔끔하게 처리 가능!
반응형
'Back-End > Spring-Boot' 카테고리의 다른 글
| Mono 고급 정리 - zip, fromCallable, block까지 실전 활용 정리 (0) | 2025.05.20 |
|---|---|
| Spring WebFlux의 Mono (0) | 2025.05.20 |
| DTO ↔ Entity 변환에 대한 고민과 MapStruct (0) | 2025.03.16 |
| JPA에서 JPQL 사용하는 법 (0) | 2025.03.16 |
| Response Body 객체 기본생성자 (0) | 2024.11.25 |