수정일을 기준으로 시작 날짜와, 끝 날짜를 입력 받아 해당 기간 내에 수정된 피드 목록을 불러와는 기능을 구현하고자 했다.
@GetMapping
public ResponseEntity<Page<FeedResponseDto>> findAllFeed(
@PageableDefault(size = 10, sort = "updatedAt", direction = Sort.Direction.DESC) Pageable pageable,
@RequestParam(required = false) String startDate,
@RequestParam(required = false) String endDate) {
Page<FeedResponseDto> feedResponseDtosList = feedService.findAllFeed(startDate, endDate, pageable);
return new ResponseEntity<>(feedResponseDtosList, HttpStatus.OK);
}
@RequestParam(required = false)
로 필수 파라미터가 아니게 하여, 값이 있으면 해당 기간별 조회,
없으면 전체 기간을 조회 하고자 했다.
파라미터가 없을 때 JAVA에서 NULL을 날짜 최솟값과, 최댓값으로 변경되도록 구현하였다.
LocalDateTime start = (startDate == null) ? LocalDateTime.MIN : LocalDate.parse(startDate).atStartOfDay();
LocalDateTime end = (endDate == null) ? LocalDateTime.MAX : LocalDate.parse(endDate).atTime(23, 59, 59);
위 코드는 null일 경우 LocalDateTime.MIN 또는 LocalDateTime.MAX 을 하고
사용자가 값을 입력했을 경우에는 String 타입을 LocalDateTime으로 파싱을 해주어
feedList = feedRepository.findAllByUpdatedAtBetween(start, end, pageable);
목록을 불러오게끔 구현하였다.
위 예시와 같이 파라미터에 날짜를 넣어주면 해당 기간 내에 피드 목록을 잘 불러온다.
파라미터가 없을 경우에 모든 피드목록을 불러오길 기대했지만…
빈 배열이 반환되었다.
문제를 찾기위해 1시간이라는 시간을 소비하였지만 원인은 생각보다 간단했다.
<JAVA>