Spring Framework

타임라인서비스) 조회 시간으로부터 24시간 이내 작성한 게시물만 조회

na_o 2021. 7. 24. 17:05
728x90

타임라인 서비스가 불러오는 메모 목록의 시간을, 조회 시간으로부터 24시간 이내로 바꾸기

힌트1) spring jpa localtime between 라고 구글링해보세요.

힌트2) 지금은 LocalDateTime.now(), 하루 전은 LocalDateTime.now().minusDays(1) 입니다.

 

 

- JPA between 사용법

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods

 

Spring Data JPA - Reference Documentation

Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del

docs.spring.io

 

- Java8 LocalDateTime

날짜와 시간 정보 모두가 필요할 때 사용

Java 8 부터 java.time(joda.time) api 출시 됐기 때문에 Java version 8 이상만 가능

 

발전 흐름 순 :

java.util.Date > java.util.Calendar > java.time(org.joda.time)

 

// 로컬 컴퓨터의 현재 날짜와 시간 정보
LocalDateTime currentDateTime = LocalDateTime.now();	//2021-07-24T16:58:55.364

LocalDateTime targetDateTime = LocalDateTime.of(2021, 01, 13, 01, 13,23,4567);
//2021-01-13T01:13:23.000004567

LocalDateTime currentDateTime1 = LocalDateTime.now();	//2021-07-24T16:58:55.364
//더하기는 plus***() 빼기는 minus***()
//currentDateTime.plusYears(long) or minusYears(long)

currentDateTime.plusDays(2);	//2021-07-26T16:58:55.364

https://java119.tistory.com/52

 

[Java] LocalDate,LocalTime,LocalDateTime 총 정리

아직도!!!!!!!!!!!!!! Calender나 Date를 사용하려는 혹은 사용하고 있는 저 같은분들을 위해 준비한 글입니다. Java 8 부터 java.time(joda.time) api 출시 됐기 때문에, Java version 8 이상만 가능합니다. J..

java119.tistory.com

 

/*MemoRepository.java*/

package com.sparta.week03.domain;

...

public interface MemoRepository extends JpaRepository<Memo, Long> {
    
    List<Memo> findAllByModifiedAtBetweenOrderByModifiedAtDesc(LocalDateTime start, LocalDateTime end);

}
/*MemoController.java*/

...

    @GetMapping("/api/memos")
    public List<Memo> getMemo() {
        LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
        LocalDateTime now = LocalDateTime.now();
        //return memoRepository.findAllByOrderByModifiedAtDesc();
        return memoRepository.findAllByModifiedAtBetweenOrderByModifiedAtDesc(yesterday, now);
    }
    
...