JPA는 사용하면 할수록 자동으로 쿼리문을 생성해주는 편의성 때문에 좋다고 느끼고 있다.
프로젝트를 진행하면서 날짜를 기준으로 조회 후 정렬을 해야해야 했었는데, 관련 부분을 학습하면서 배운 내용을 정리해두려고 한다.
특정 날짜 이전으로 조회하기 (Before 사용)
@Repository
public interface MeetingRepository extends JpaRepository<Meeting, Integer> {
Page<Meeting> findAllByMeetingStartDateBefore(LocalDateTime date, Pageable pageable);
}
Entitiy의 날짜가 LocalDateTime으로 구성되어있다면 위와 같이
Date로 구성되어있다면 Date를 사용하면 된다.
해당 date에 특정하고 싶은 날짜를 넘겨주면 된다.
만약 현재 시간을 기준으로 이전을 조회한다고 하면 아래와 같이 사용하면 된다.
@Override
public Page<Meeting> meetingList(Pageable pageable) {
LocalDateTime date = LocalDateTime.now();
return meetingRepository.findAllByMeetingStartDateBefore(date, pageable);
}
특정 날짜 이후로 조회하기 (After 사용)
@Repository
public interface MeetingRepository extends JpaRepository<Meeting, Integer> {
Page<Meeting> findAllByMeetingStartDateAfter(LocalDateTime date, Pageable pageable);
}
뒷 부분만 Before에서 After로 변경 후에 해당 date에 특정하고 싶은 날짜를 넘겨주면 된다.
특정 날짜 사이 조회하기 (Between 사용)
@Repository
public interface MeetingRepository extends JpaRepository<Meeting, Integer> {
Page<Meeting> findAllByMeetingStartDateBetween(LocalDateTime startDate, LocalDateTime endDate, Pageable pageable);
}
startDate의 시작 날짜, endDate에 끝나는 날짜를 넣어주면 해당 사이의 날짜 결과만 조회한다.
조회한 값 정렬하기
조회 시에 페이징 처리를 하기 위해 Pageable을 같이 넘겨주었는데 이를 이용해 정렬을 할 수 있다.
원하는 컬럼을 Sort.by를 이용해서 오름차순이나 내림차순으로 정렬이 가능하다.
Page<Meeting> meetingPage = meetingService.meetingList(PageRequest.of(page, size, Sort.by(Sort.Direction.ASC, "meetingStartDate")));
'Backend > JPA' 카테고리의 다른 글
[JPA] JPA로 복합키로 구성된 테이블 생성 및 삭제하기 (0) | 2022.01.22 |
---|