Spring

[스프링] query subject keywords

웨일파도 2023. 7. 11. 12:55
반응형

1. keyword : find by, read by, search by, qeury by, get by, srtream by

(data.sql )

insert into member(`id`, `name`, `email`, `create_at`, `update_at`) values (1, '홍길동', 'mars@thejoeun.com', now(), now());
insert into member(`id`, `name`, `email`, `create_at`, `update_at`) values (2, '박남순', 'namsun@thejoeun.com', now(), now());
insert into member(`id`, `name`, `email`, `create_at`, `update_at`) values (3, '이순신', 'leesunsin@gmail.com', now(), now());
insert into member(`id`, `name`, `email`, `create_at`, `update_at`) values (4, '강감찬', 'namsun@thejoeun.com', now(), now());
insert into member(`id`, `name`, `email`, `create_at`, `update_at`) values (5, '홍길동', 'ryukwansun@thejoeun.com', now(), now());
public interface MemberRepository extends JpaRepository<Member, Long> {

    List<Member> findByName(String name);
    List<Member> readByName(String name);
    List<Member> searchByName(String name);
    List<Member> queryByName(String name);
    List<Member> getByName(String name);
    List<Member> streamByName(String name);

}
@SpringBootTest
public class JpaQueryMethodTest {

    @Autowired
    private  MemberRepository memberRepository;   

    @Test
    void jpaQueryMethodTest1() {

        // SELECT문: name값으로 특정 row데이터 가져오기
        System.out.println("findByName: " + memberRepository.findByName("이순신"));
        System.out.println("findByName: " + memberRepository.readByName("이순신"));
        System.out.println("searchByName: " + memberRepository.searchByName("이순신"));
        System.out.println("queryByName: " + memberRepository.queryByName("이순신"));
        System.out.println("getByName: " + memberRepository.getByName("이순신"));
        System.out.println("streamByName: " + memberRepository.streamByName("이순신"));

    }

}

console 창 (결과값 확인)

더보기

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.name='이순신';
findByName: [Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T14:48:52, updateAt=2023-07-11T14:48:52)]

 

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.name='이순신';
readByName: [Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T14:48:52, updateAt=2023-07-11T14:48:52)]

 

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.name='이순신';
searchByName: [Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T14:48:52, updateAt=2023-07-11T14:48:52)]
Hibernate: 

 

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.name='이순신';
queryByName: [Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T14:48:52, updateAt=2023-07-11T14:48:52)]

 

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.name='이순신';
getByName: [Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T14:48:52, updateAt=2023-07-11T14:48:52)]

 

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.name='이순신';
streamByName: [Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T14:48:52, updateAt=2023-07-11T14:48:52)]

 

2. keyword: exists by
    boolean existsByName(String name);
    boolean existsByEmail(String email);​
 boolean isNameMember = memberRepository.existsByName("이순신");
        if (isNameMember)
            System.out.println("회원 이름이 존재합니다.");

 boolean isEmailMember = memberRepository.existsByEmail("leesunsin@gmail.com");
        if (isEmailMember)
            System.out.println("회원 이메일이 존재합니다.");​

콘솔창

더보기

/* <criteria> */ select m1_0.id from member m1_0 where m1_0.name='이순신' limit 1;
회원 이름이 존재합니다.

 

/* <criteria> */ select m1_0.id from member m1_0 where m1_0.email='leesunsin@gmail.com' limit 1;
회원 이메일이 존재합니다.

 

3. keyword: count by
Integer countByName(String name);
 Integer cntNameMember = memberRepository.countByName("홍길동");
        System.out.println("cntNameMember: " + cntNameMember);

콘솔창

더보기

/* <criteria> */ select count(m1_0.id) from member m1_0 where m1_0.name='홍길동';
cntNameMember: 2

 

4. keyword: Top, first
    List<Member> findTop1ByEmail(String email);
    List<Member> findFirst1ByEmail(String email);
    List<Member> findTop2ByEmail(String email);
// topNumber, firstNumber, lastNumber
 memberRepository.findTop1ByEmail("namsun@thejoeun.com").forEach(System.out::println);
 memberRepository.findFirst1ByEmail("namsun@thejoeun.com").forEach(System.out::println);
 memberRepository.findTop2ByEmail("namsun@thejoeun.com").forEach(System.out::println);

콘솔창

더보기

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.email='namsun@thejoeun.com' limit 1;
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:00:32, updateAt=2023-07-11T15:00:32)

 

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.email='namsun@thejoeun.com' limit 1;
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:00:32, updateAt=2023-07-11T15:00:32)

 

/* <criteria> */ select m1_0.id,m1_0.create_at,m1_0.email,m1_0.name,m1_0.update_at from member m1_0 where m1_0.email='namsun@thejoeun.com' limit 2;
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:00:32, updateAt=2023-07-11T15:00:32)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:00:32, updateAt=2023-07-11T15:00:32)

반응형

'Spring' 카테고리의 다른 글

[스프링] page  (0) 2023.07.11
★[스프링] Query predicate keywords  (0) 2023.07.11
[스프링] crud test  (0) 2023.07.11
[스프링] logging  (0) 2023.07.11
[스프링] Hibernate를 사용하여 데이터베이스 초기화하기  (0) 2023.07.10