[JPA] QueryMethod 살펴보기

QueryMethod

Jpa에서 제공하는 메서드에 +@해서 세부 조건(where)에 해당하는 데이터를 뽑게 해주는 메서드

 

1. findBy와 동의어들

    User findByEmail(String email);
    User getByEmail(String email);
    User readByEmail(String email);
    User queryByEmail(String email);
    User searchByEmail(String email);
    User streamByEmail(String email);
    User findUserByEmail(String email);
    User findSthByEmail(String email);java

 

2. 서술어 is=equals : 없는것과 동일

    Set<User> findUserByName(String name);
    Set<User> findUserByNameIs(String name);
    Set<User> findUserByNameEquals(String name);java

 

3. first=top : 처음 n번째 요소를 꺼내기

User findFirst1ByName(String name); //==findFirstByName
List<User> findFirst2ByName(String name);
List<User> findTop2ByName(String name);
List<User> findLast1ByName(String name); //주의! Last는 없음. 이거는 =findByName처리

 

4. and(매개변수 다 만족), or(매개변수 하나 이상 만족)

List<User> findByEmailAndName(String email,String name);
List<User> findByEmailOrName(String email,String name);java

 

5. after(매개변수 포함x 이후), greaterthan(equal), between(두 매개변수 포함,사이)

List<User> findByCreatedAtAfter(LocalDateTime yesterday);
List<User> findByCreatedAtGreaterThan(LocalDateTime yesterday);
List<User> findByCreatedAtGreaterThanEqual(LocalDateTime yesterday);
List<User> findByCreatedAtBetween(LocalDateTime yesterday,LocalDateTime tomorrow);

List<User> findByIdAfter(Long Id); //but after는 시간개념에 잘 쓰이는 편임
List<User> findByIdBetween(Long id1, Long id2);
List<User> findByIdGreaterThanEqualAndIdLessThanEqual(Long id1, Long id2);//between을 풀어서 쓰면 이렇다java

 

6. isnotnull, isempty(collection이 비었는지 검사)

List<User> findByIdIsNotNull();
List<User> findByAddressIsNotEmpty();
List<User> findByAddressIsNotNull();
//    List<User> findByIdIsNotEmpty(); //(x) : IsEmpty / IsNotEmpty can only be used on collection properties!java

 

7. in

List<User> findByNameIn(List<String> names);

 

8. startingwith, endingwith, contains, like(정규식)

List<User> findByNameStartingWith(String name);
List<User> findByNameEndingWith(String name);
List<User> findByNameContains(String name);
List<User> findByNameLike(String name);

 

9. orderby

List<User> findFirstByNameOrderByIdDesc(String name);
List<User> findFirstByNameOrderByEmailDescIdAsc(String name);

 

10. findby(sort)

List<User> findFirstByName(String name,Sort sort);

 

11. page<User> (pageable)

Page<User> findByName(String name, Pageable pageable);  //Page는 Slice 인터페에스(조각에 대한 정보들 포함)를 상속받고 있으며 여기에 전체를 보는 total 메서드도 있다.java

 

12. nativeQuery

@Query(value="select * from user limit 1",nativeQuery = true)
Map<String,Object> findRawRecord();

'BackEnd > 패캠' 카테고리의 다른 글

[JPA] 연관관계  (0) 2022.02.01
[JPA] EntityListener  (0) 2022.01.31
[JPA] data.sql 설정 / 롬복 / Repository Interface 메소드  (0) 2022.01.29
swagger  (0) 2022.01.28
테스트 커버리지 확인  (0) 2022.01.27