반응형
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
public class Member {
@Id
private Long id;
private String name;
private String email;
private LocalDateTime createAt;
private LocalDateTime updateAt;
}
1. keyword: AND, OR
List<Member> findByNameAndEmail(String name, String email);
List<Member> findByNameOrEmail(String name, String email);
List<Member> memberList = memberRepository.findByNameAndEmail("홍길동","mars@thejoeun.com");
memberList.forEach(System.out::println);
List<Member> memberList2 = memberRepository.findByNameOrEmail("홍길동","mars@thejoeun.com");
memberList2.forEach(System.out::println);
WHERE 절에 AND / OR
/* <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='홍길동' and m1_0.email='mars@thejoeun.com';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:08:34, updateAt=2023-07-11T15:08:34)
/* <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='홍길동' or m1_0.email='mars@thejoeun.com';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:08:34, updateAt=2023-07-11T15:08:34)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:08:34, updateAt=2023-07-11T15:08:34)
2. keyword: after, greater, equal, between
List<Member> findByCreateAtAfter(LocalDateTime yesterday);
List<Member> findByCreateAtIsAfter(LocalDateTime yesterday);
List<Member> findByCreateAtGreaterThan(LocalDateTime yesterday);
List<Member> findByCreateAtGreaterThanEqual(LocalDateTime yesterday);
List<Member> findByIdGreaterThanEqual(Long id);
List<Member> findByCreateAtBetween(LocalDateTime yesterday, LocalDateTime tomorrow);
@Test
void jpaQueryMethodTest4() {
System.out.println("1. CreateAt + After----------------------------");
// CreateAt + After
List<Member> memberList1 = memberRepository.findByCreateAtAfter(LocalDateTime.now().minusDays(1L));
memberList1.forEach(s -> System.out.println(s));
System.out.println("2. CreateAt + IsAfter----------------------------");
// CreateAt + IsAfter
List<Member> memberList2 = memberRepository.findByCreateAtIsAfter(LocalDateTime.now().minusDays(1L));
memberList2.forEach(s -> System.out.println(s));
System.out.println("3. CreateAt + GreaterThan----------------------------");
// CreateAt + GreaterThan
List<Member> memberList3 = memberRepository.findByCreateAtGreaterThan(LocalDateTime.now().minusDays(1L));
memberList3.forEach(s -> System.out.println(s));
System.out.println("4. CreateAt + GreaterThanEqual----------------------------");
// CreateAt + GreaterThanEqual
List<Member> memberList4 = memberRepository.findByCreateAtGreaterThanEqual(LocalDateTime.now().minusDays(1L));
memberList4.forEach(s -> System.out.println(s));
System.out.println("5. GreaterThanEqual----------------------------");
// GreaterThanEqual
List<Member> memberList5 = memberRepository.findByIdGreaterThanEqual(3L);
memberList5.forEach(s -> System.out.println(s));
System.out.println("6. CreateAt + Between----------------------------");
// CreateAt + Between
List<Member> memberList6 = memberRepository.findByCreateAtBetween(LocalDateTime.now().minusDays(1L), LocalDateTime.now().plusDays(1L));
memberList6.forEach(s -> System.out.println(s));
}
1. CreateAt + After---------------------------- (>)
/* <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.create_at>'2023-07-10T15:18:45.314+0900';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=6, name=유관순1, email=ryukwansun1@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
Member(id=7, name=유관순2, email=ryukwansun2@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
2. CreateAt + IsAfter----------------------------(>)
/* <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.create_at>'2023-07-10T15:18:45.489+0900';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=6, name=유관순1, email=ryukwansun1@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
Member(id=7, name=유관순2, email=ryukwansun2@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
3. CreateAt + GreaterThan----------------------------(>)
/* <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.create_at>'2023-07-10T15:18:45.494+0900';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=6, name=유관순1, email=ryukwansun1@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
Member(id=7, name=유관순2, email=ryukwansun2@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
4. CreateAt + GreaterThanEqual----------------------------(>=)
/* <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.create_at>='2023-07-10T15:18:45.499+0900';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=6, name=유관순1, email=ryukwansun1@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
Member(id=7, name=유관순2, email=ryukwansun2@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
5. GreaterThanEqual----------------------------(>=)
/* <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.id>=3;
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=6, name=유관순1, email=ryukwansun1@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
Member(id=7, name=유관순2, email=ryukwansun2@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
6. CreateAt + Between----------------------------(betwwen A and B)
/* <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.create_at between '2023-07-10T15:18:45.508+0900' and '2023-07-12T15:18:45.508+0900';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=2, name=박남순, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:18:44, updateAt=2023-07-11T15:18:44)
Member(id=6, name=유관순1, email=ryukwansun1@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
Member(id=7, name=유관순2, email=ryukwansun2@thejoeun.com, createAt=2023-07-11T15:18:42, updateAt=2023-07-11T15:18:42)
3. keyword: like, contains
(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());
insert into member(`id`, `name`, `email`, `create_at`, `update_at`) values (6, '이홍렬', 'hong@thejoeun.com', now(), now());
List<Member> findByNameLike(String likeName);
List<Member> findByNameContains(String name);
List<Member> memberList7 = memberRepository.findByNameLike("%홍%");
memberList7.forEach(s -> System.out.println(s));
List<Member> memberList1 = memberRepository.findByNameContains("이");
memberList1.forEach(s -> System.out.println(s));
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 like '%홍%' escape '\\';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:40:59, updateAt=2023-07-11T15:40:59)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:40:59, updateAt=2023-07-11T15:40:59)
Member(id=6, name=이홍렬, email=hong@thejoeun.com, createAt=2023-07-11T15:40:59, updateAt=2023-07-11T15:40:59)
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 like '%이%' escape '\\';
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:52:53, updateAt=2023-07-11T15:52:53)
Member(id=6, name=이홍렬, email=hong@thejoeun.com, createAt=2023-07-11T15:52:53, updateAt=2023-07-11T15:52:53)
4. keyword: in
List<Member> findByNameIn(List<String> nameList);
List<Member> memberList8 = memberRepository.findByNameIn(Lists.newArrayList("홍길동", "강감찬"));
memberList8.forEach(s -> System.out.println(s));
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 in ('홍길동','강감찬');
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:44:20, updateAt=2023-07-11T15:44:20)
Member(id=4, name=강감찬, email=namsun@thejoeun.com, createAt=2023-07-11T15:44:20, updateAt=2023-07-11T15:44:20)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:44:20, updateAt=2023-07-11T15:44:20)
5. keyword: startingWith, endingWith
List<Member> findByNameStartingWith(String name);
List<Member> findByNameEndingWith(String name);
System.out.println("startingWith----------------");
List<Member> memberList2 = memberRepository.findByNameStartingWith("이");
memberList2.forEach(s -> System.out.println(s));
System.out.println("EndingWith----------------");
List<Member> memberList3 = memberRepository.findByNameEndingWith("동");
memberList3.forEach(s -> System.out.println(s));
startingWith----------------
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 like '이%' escape '\\';
Member(id=3, name=이순신, email=leesunsin@gmail.com, createAt=2023-07-11T15:52:53, updateAt=2023-07-11T15:52:53)
Member(id=6, name=이홍렬, email=hong@thejoeun.com, createAt=2023-07-11T15:52:53, updateAt=2023-07-11T15:52:53)
EndingWith----------------
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 like '%동' escape '\\';
Member(id=1, name=홍길동, email=mars@thejoeun.com, createAt=2023-07-11T15:52:53, updateAt=2023-07-11T15:52:53)
Member(id=5, name=홍길동, email=ryukwansun@thejoeun.com, createAt=2023-07-11T15:52:53, updateAt=2023-07-11T15:52:53)
반응형
'Spring' 카테고리의 다른 글
[스프링 JPA] Entity Listener (0) | 2023.07.13 |
---|---|
[스프링] page (0) | 2023.07.11 |
[스프링] query subject keywords (0) | 2023.07.11 |
[스프링] crud test (0) | 2023.07.11 |
[스프링] logging (0) | 2023.07.11 |