Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Query Method 3 본문

JPA

Query Method 3

Seung__ 2021. 5. 27. 20:15

이번엔 bean값과 관련된 keyword를 살펴보자.

 

 

1. IS_NOT_NULL


List<User> findByIdIsNotNull();
System.out.println("find by id is not null : " + userRepository.findByIdIsNotNull());

id가 primary key 여서... null인 경우가 없다.. 

 

2. in / notIn


자주 사용된다~~~리스트 안에 있는 이름들을 가진 entity를 찾아보자.

List<User> findByNameIn(List<String> names);
System.out.println("find by name in : " 
+ userRepository.findByNameIn(Lists.newArrayList("hyun", "kim")));

테스트 결과 해당 이름을 가진 entity들을 찾아왔다!

where
        user0_.name in (
            ? , ?
        )
find by name in : [
  User(name=hyun, email=hyun@naver.com, createdAt=2021-05-26T23:15:27.285476,
	updatedAt=2021-05-26T23:15:27.285476, id=1), 
  User(name=kim, email=kim@google.com, createdAt=2021-05-26T23:15:27.289462, 
  	updatedAt=2021-05-26T23:15:27.289462, id=4), 
  User(name=hyun, email=hyun@google.com, createdAt=2021-05-26T23:15:27.289462,
  	updatedAt=2021-05-26T23:15:27.289462, id=5)
    ]

 

보통 in 구절에 리스트를 넣어서 사용하기는 하는데, 다른 query의 결과값을 받아서 쓴다.

만약 list의 사이즈가 너무 크면 성능 이슈가 생길 수 있기 때문에, in 구절에 사용되는 list의 사이즈를 미리 검토?하고 사용하도록 해보자.

 

3.  startingWith, endingWith, containing


문자열과 관련된 keyword

 List<User> findByNameStartingWith(String name);
 List<User> findByNameEndingWith(String name);
 List<User> findByNameContaining(String name);
System.out.println("find by name staring with : " 
	+ userRepository.findByNameStartingWith("hy"));
System.out.println("find by name ending with : "
	+ userRepository.findByNameEndingWith("un"));
System.out.println("find by name containing : "
	+ userRepository.findByNameContaining("k"));

StartingWith("hy") 결과

where
        user0_.name like ? escape ?
find by name staring with : [
  User(name=hyun, email=hyun@naver.com, createdAt=2021-05-26T23:50:11.291727, 
	updatedAt=2021-05-26T23:50:11.291727, id=1), 
  User(name=hyun, email=hyun@google.com, createdAt=2021-05-26T23:50:11.299700, 
  	updatedAt=2021-05-26T23:50:11.299700, id=5)
    ]

EndingWith("un") 결과

    user0_.name like ? escape ?
find by name ending with : [
  User(name=hyun, email=hyun@naver.com, createdAt=2021-05-26T23:50:11.291727, 
	updatedAt=2021-05-26T23:50:11.291727, id=1), 
  User(name=hyun, email=hyun@google.com, createdAt=2021-05-26T23:50:11.299700, 
	updatedAt=2021-05-26T23:50:11.299700, id=5)
]

Containing("k") 결과

 where
        user0_.name like ? escape ?
find by name containing : [
  User(name=park, email=park@google.com, createdAt=2021-05-26T23:50:11.298704, 
	updatedAt=2021-05-26T23:50:11.298704, id=2), 
  User(name=kim, email=kim@google.com, createdAt=2021-05-26T23:50:11.299700, 
	updatedAt=2021-05-26T23:50:11.299700, id=4)]

 

 

 

'JPA' 카테고리의 다른 글

Query Method : paging  (0) 2021.05.27
Query Method 3 : 정렬  (0) 2021.05.27
Query Method 활용2  (0) 2021.05.26
Query Method 활용1  (0) 2021.05.26
SimpleJpaRepository분석  (0) 2021.05.24
Comments