[삽질 피하기] Spring Boot 날짜 다루기

2021. 4. 10. 15:39삽질 피하기

1. 날짜 다루기

1) Entity

Entity에서 날짜 어노테이션을 다루는 방법은 다음과 같다.

@Column
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate regDate;


@Column
@DateTimeFormat(pattern = "HH:mm:ss")
private LocalTime regTime;


@CreationTimestamp
@Column(name = "createdAt", nullable = false, updatable = false)
private LocalDate createdAt;


@UpdateTimestamp
@Column(name = "updatedAt", nullable = false)
private LocalDate updatedAt;

2) Controller

Controller에서 날짜 정보를 쿼리 스트링으로 받아오는 방법은 다음과 같다.

@GetMapping("")
public BaseResponse<?> findAllByIdAndRegDateBetween( ... (생략)
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate) {

    ... (생략)

}

3) Service

Service에서 두 날짜 사이의 데이터를 가져오는 방법은 다음과 같다.

public List<?> findAllByIdAndRegDate(Long id, LocalDate startDate, LocalDate endDate) throws Exception {
	
    try {
        return Trepository.findAllByIdAndRegDateBetween(id, startDate, endDate).stream()
            .map(Response::new)
            .collect(Collectors.toList());

    } catch (Exception exception) {
        throw new BaseException(FAILED);
    }
}

4) Repository

Repository에서 두 날짜 사이의 데이터를 가져오는 방법은 다음과 같다.

List<?> findAllByIdAndRegDateBetween(Long id, LocalDate startDate, LocalDate endDate);

 

728x90