본문 바로가기
Spring/JPA

Query Method 구현 1

by step 1 2021. 7. 17.
반응형

기존의 작성한 UserRepository에 메소드를 구현

참고 사이트: https://ykh6242.tistory.com/105

 

Spring Data JPA(2) - JpaRepository 쿼리 메소드 기능

해당 포스팅은 [ 자바 ORM 표준 JPA 프로그래밍 - 김영한 저 ]를 학습한 내용을 바탕으로 정리한 글입니다. 쿼리 메소드 기능 쿼리 메소드 기능은 스프링 데이터 JPA가 제공하는 특별한 기능이다. 크

ykh6242.tistory.com

 

findBy뒤에 Dto 변수를 입력하면 자동으로 해당변수의 해당하는 데이터를 찾아온다.

 

UserName으로 데이터를 찾는 메소드 구현

아래와 같은 리턴타입으로 변경할 수도 있다.

Test 코드 작성

데이터를 입력하는 부분을 Dto() 함수로 따로 뺐다.

    // 테스트를 진행하기 전에 데이터를 입려하는 부분
    public void Dto(){
        // 기본 데이터 생성 jpa를 이용하여 insert 된다.
        userRepository.save(new User("martin", "martin@fastcampus.com", LocalDateTime.now(), LocalDateTime.now()));
        userRepository.save(new User("dennis", "dennis@fastcampus.com", LocalDateTime.now(), LocalDateTime.now()));
        userRepository.save(new User("sophia", "sophia@fastcampus.com", LocalDateTime.now(), LocalDateTime.now()));
        userRepository.save(new User("james", "james@fastcampus.com", LocalDateTime.now(), LocalDateTime.now()));
        userRepository.save(new User("martin2", "martin2@fastcampus.com", LocalDateTime.now(), LocalDateTime.now()));
    }

 

사용자 이름으로 데이터를 찾는 테스트 코드 작성

    @Test
    void select(){
        // 데이터 입력
        Dto();
        // user name으로 결과 가져오기
        System.out.println(userRepository.findByName("martin"));
    }

 

이메일로 데이터를 찾는 예제

    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);

테스트 코드

// 이메일을 이용하여 데이터 검색
        // 아래 내용 모두 동일한 쿼리와 결과값이 나오는걸 확인 할 수 있다.
        System.out.println("findByEmail: " + userRepository.findByEmail("martin@fastcampus.com"));
        System.out.println("getByEmail: " + userRepository.getByEmail("martin@fastcampus.com"));
        System.out.println("readByEmail: " + userRepository.readByEmail("martin@fastcampus.com"));
        System.out.println("queryByEmail: " + userRepository.queryByEmail("martin@fastcampus.com"));
        System.out.println("searchByEmail: " + userRepository.searchByEmail("martin@fastcampus.com"));
        System.out.println("streamByEmail: " + userRepository.streamByEmail("martin@fastcampus.com"));
        System.out.println("findUserByEmail: " + userRepository.findUserByEmail("martin@fastcampus.com"));

 

원하는 컬럼의 갯수를 지정하여 데이터 내보내기

By를 기준으로 앞부분에 컬럼의 갯수를 입력하고 뒷부분에 Dto변수명을 입력한다.

List<User> findFirst1ByName(String name);
List<User> findTop1ByName(String name);

테스트 코드 작성

System.out.println("findTop1ByName: " + userRepository.findTop1ByName("martin"));
System.out.println("findFirst11ByName: " + userRepository.findFirst1ByName("martin"));

쿼리 확인(where절에 limit 조건이 추가된 것을 확인할 수 있다.)

반응형

'Spring > JPA' 카테고리의 다른 글

Query Method 예제 - 3  (0) 2021.07.17
QueryMethod 예제 2  (0) 2021.07.17
JPA 메소드 예제 3 - update  (0) 2021.07.11
JPA TEST 코드 예제 2  (0) 2021.07.11
JPA 설정 및 테스트코드 예제 1  (0) 2021.07.04