find{엔티티명}By{필드명} ------> 엔티티명은 생략 가능하다.
List<객체> findBy{필드명}({변수타입} {변수명});
매개변수로 검색할 때 사용
List<객체> findBy{필드명}Or{필드명}({변수타입} {변수명},{변수타입} {변수명});
OR조건을 이용
List<객체> findBy{필드명}LessThan(Integer {변수명});
매개변수 미만인 것을 검색
List<객체> findBy{필드명}LessThanOrderBy{필드명}Desc(Integer {변수명});
매개변수 미만인 것을 검색 + 내림차순 정렬
: 복잡한 쿼리의 경우, @Query 사용
@Query(select {별칭} from {객체} {별칭} where {별칭}.{필드명} like %:{파라미터로 넘어온 값}% order by {별칭}.{필드명} desc)
List<객체> findBy{필드명}(@Param("{파라미터로 넘어온 값}") String 매개변수 )
ex)
@Query("select i from Item i where i.itemDetail like %:itemDetail% order by i.price desc")
List< Item > findByItemDetail(@Param("itemDetail") String itemDetail)
@Query(value="select * from {객체} {별칭} where {별칭}.{필드명} like %:{파라미터로 넘어온 값}% order by {별칭}.{필드명} desc",nativeQuery = true)
List<객체> findBy{필드명}(@Param("{파라미터로 넘어온 값}") String 매개변수)
데이터베이스에 사용하던 쿼리를 그대로 사용해야 할 때는 nativeQeury속성을 사용하면 기존 쿼리 그대로 활용 가능
But 특정 DB에 종속되는 쿼리문을 사용하기 때문에 DB에 대한 독립적이라는 장점 잃는다.
기존에 작성한 통계용 쿼리처럼 복잡한 쿼리 그대로 사용해야 하는 경우 활용