Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정처기
- 정처기예상문제
- 자바
- 정처기필기
- 이것이자바다
- 정처기설명
- 게시판만들기
- CRUD구현
- function
- java
- 코딩테스트
- spring
- 파이선
- 게시판프로젝트
- 정보처리기사필기
- 스프링
- 어노테이션
- 소프트웨어설계
- CRUD
- 프로그래머스
- 파이썬
- 게시판
- 스프링부트
- PYTHON
- springboot
- 정보처리기사
- 자바의정석요약
- 소프트웨어개발
- 자바의정석
- 정처기공부
Archives
- Today
- Total
Helmi
쿼리 메소드 -2 본문
쿼리 메소드 Sample 및 JPQL snippet
Keyword | Sample | JPQL snippet |
And | findByLastnameAndFirstname | ... where X.lastname = ?1 and X.firstname = ?2 |
Or | findByLastnameOrFirstname | ... where X.lastname = ?1 or X.firstname = ?2 |
Is, Equals | finfByFirstname findByFirstnameIs findByFirstnameEquals |
... where X.firstname = ?1 |
Between | findByStartDateBetween | ...where X.startDate between ?1 amd ?2 |
LessThan | findByAgeLessThan | ... where X.age < ?1 |
LessThanEqual | findByAgeLessThanEqual | ... where X.age <= ?1 |
GreaterThan | findByAgeGreaterThan | ... where X.age > ?1 |
GreaterThanEqual | findByAgeGreaterThanEqual | ... where X.age >= ?1 |
After | findByStartDateAfter | ... where X.startDate > ?1 |
Before | findByStartDateBefore | ... where X.startDate < ?1 |
IsNull, Null IsNotNull |
findByAge(Is)Null | ... where X.age is null |
NotNull | findByAge(Is)NotNull | ... where X.age not null |
Like | findByFirstnameLike | ... where X,firstname like ?1 |
NotLike | findByFirstnameNotLike | ... where X,firstname not like ?1 |
StartingWith | findByFirstnameStartingWith | ... where X.firstname like ?1 (parameter bound with appended %) |
EndingWith | findByFirstnameEndingWith | ... where X.firstname like ?1 (parameter bound with prepended %) |
Containing | findByFirstnameContaining | ... where X.firstname like ?1 (parameter bound with wrapped in %) |
OrderBy | findByAgeOrderByLastnameDesc | ... where X.age = 1? order by X,lastname desc |
Not | findByLastnameNot | ... where X.lastname <> ?1 |
In | findByAgeIn(Collection<Age>ages) | ... where X.age in ?1 |
Notin | findByAgeNotIn(Collection<Age>ages) | ... where X.age not in ?1 |
True | findByActiveTrue() | ... where X.active = true |
False | findByActiveFalse() | ... where X.active = false |
IgnoreCase | findByFirstnameIgnoreCase | ... where UPPER(x.firstname) = UPPER(?1) |
▶ 상품을 상품명, 상세 설명을 OR 조건 이용해 조회하는 쿼리 메소드
(com.shop.repository.ItemRepository.java)
public interface ItemRepository extends JpaRepository<Item, Long> {
/* 코드 생략 */
List<Item> findItemByitemDetail(String itemDetail);
}
(com.shop.repository.ItemRepositoryTest.java)
@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
class ItemRepositoryTests {
/*코드 생략*/
@Test
@DisplayName("OR 조회 테스트")
public void findByItemNmOritemDetailTests() {
this.createItemList();
List<Item> itemList
= itemRepository.findByItemNmOrItemDetail("테스트 상품1","테스트상품 상세3");
for(Item item : itemList) {
System.out.println(item.toString());
}
}
}
- this.createItemList() : 기존에 만들었던 테스트상품 만드는 메소드 실행해 조회할 대상 만들어줌
▶ LessThan 조건 처리하기
(com.shop.repository.ItemRepository.java)
public interface ItemRepository extends JpaRepository<Item, Long> {
/* 코드 생략 */
List<Item> findByPriceLessThan(Integer price);
}
- 파라미터로 넘어온 price 변수보다 값 작은 상품 데이터 조회 쿼리
(com.shop.repository.ItemRepositoryTest.java)
@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
class ItemRepositoryTests {
/*코드 생략*/
@Test
@DisplayName("가격 LessThan 테스트")
public void findByPriceLessThanTest() {
this.createItemList();
List<Item> itemList = itemRepository.findByPriceLessThan(10005);
for(Item item : itemList) {
System.out.println(item.toString());
}
}
}
현재 출력되는 가격 데이터는 10001 ~ 10004 차례로 출력.
OrderBy 키워드 이용하면 오름차순 / 내림차순 조회 가능
오름차순 : OrderBy + 속성명 + Asc 키워드
내림차순 : OrderBy + 속성명 + Desc 키워드
▶ OrderBy로 정렬 처리
(com.shop.repository.ItemRepository.java)
public interface ItemRepository extends JpaRepository<Item, Long> {
/* 코드 생략 */
List<Item> findByPriceLessThanOrderByPriceDesc(Integer price);
}
(com.shop.repository.ItemRepositoryTest.java)
@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
class ItemRepositoryTests {
/*코드 생략*/
@Test
@DisplayName("가격 내림차순 조회 테스트")
public void findByPriceLessThanOrderByPriceDesc() {
this.createItemList();
List<Item> itemList =
itemRepository.findByPriceLessThanOrderByPriceDesc(10005);
for(Item item : itemList) {
System.out.println(item.toString());
}
}
}
'SpringBoot' 카테고리의 다른 글
게시판 프로젝트 - database(oracle) (0) | 2023.04.26 |
---|---|
게시판 프로젝트 - pom.xml 설정 (0) | 2023.04.26 |
쿼리 메소드 - 1 (0) | 2023.03.14 |
Repository 설계하기 (0) | 2023.03.14 |
Entity 매핑 관련 어노테이션 (0) | 2023.03.13 |