bookRepository
@Query(value = "select b from Book b where name = ?1 and createdAt >= ?2 and updatedAt >= ?3 and category is null")
List<Book> findByNameRecently(String name, LocalDateTime createdAt, LocalDateTime updateAt);
이 두개는 동일한 기능을 합니다.
List<Book> findByCategoryIsNullAndNameEqualsAndCreatedAtGreaterThanEqualAndUpdatedAtGreaterThanEqual(String name, LocalDateTime createdAt, LocalDateTime updatedAt)
?1, ?2, ?3 처럼 ?뒤에 숫자를 붙히면 몇 번째 들어가있는 파라미터인지 확인을 하고 치환시켜준다.
@Query(value = "select b from Book b" +
"where name = :name and createdAt >= :createdAt and updatedAt >= :updatedAt and category is null")
List<Book> findByNameRecently(
@Param("name") String name,
@Param("createdAt") LocalDateTime createdAt;
@Param("updatedAt") LocalDateTime updatedAt;
@Query(value = "select b.name as name , b.category as category from Book b")
List<BookNameAndCategory> findBookNameAndCategory(); //하단의 BookNameAndCategory와 연결
}
이런식으로 param을 정의하면 value에 해당하는 값이 :파라미터 이름으로 사용을 할 수 있다.
파라미터의 순서에서 자유로워 지게 되는 것.
현업에서 사용하는 많은 컬럼을 가지게 되는데
그럴 때 필요한 컬럼들만 추려서 조회할 수 있게 된다
BookNameAndCategory
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BookNameAndCategory{
private String name;
private String category;
}
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.