쿼리메서드를 통해 쿼리를 생성하는 방식은 조건이 많아질 경우 메서드의 이름이 길어져 가독성이 떨어진다.
비교적 복잡한 쿼리를 작성하기 위해 사용된다.
직접 쿼리를 사용하는 방법
@Query("SELECT p FROM Product p WHERE p.price > 2000")
List<Product> findByPriceBasis(); //@Query가 붙는 순간 메서드 이름에 규칙은 없고
//단지 호출할때 사용되는것뿐이다.
DB의 Native Query를 사용하는 방법
@Query(value="SELECT * FROM product p WHERE p.price > 2000", nativeQuery = true)
List<Product> findByPriceBasisNativeQuery();
파라미터를 쿼리에 주입하는 방법
@Query("SELECT p FROM Product p WHERE p.price >?1" //?1 = 첫번째 파라미터
List<Product> findByPriceWithParameter(Integer price);
:parameter 방식으로 주입하는 방법
@Query("SELECT p FROM Product p WHERE p.price >:price") //변수명
List<Product> findByPriceWithParameterNaming(Integer price);
@Query("SELECT p FROM Product p WHERE p.price >:pri")
List<Product> findByPriceWithParameterNaming2(@Param("pri") Integer price); //변수명