@Query 사용하기 3 / 패스트캠퍼스 챌린지 24일차

망고쥬스·2021년 11월 24일
0

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

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3FVdhDa

profile
#newbieDeveloper #since 2021.04.06

0개의 댓글