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 |