SpringBoot
쿼리 메소드 - 1
Helmi
2023. 3. 14. 16:43
package com.shop.repository;
//기존 임포트 생략
import java.util.list;
@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
class ItemRepositoryTests {
@Autowired
ItemRepository itemRepository;
//코드 생략
public void createItemList2() {
for(int i=1; i<=5; i++) {
Item item = new Item();
item.setItemNm("테스트 상품"+i);
item.setPrice(10000+i);
item.setItemDetail("테스트 상품 상세 설명"+i);
item.setItemSellStatus(ItemSellStatus.SELL);
item.setStockNumber(100);
item.setRegTime(LocalDateTime.now());
item.setUpdateTime(LocalDateTime.now());
itemRepository.save(item);
}
@Test
@DisplayName("상품명 조회 테스트")
public void findByItemNmtests() {
createItemList();
List<Item> itemList = itemRepository.findByitemNm("테스트");
for(Item item : itemList)
System.out.println("item : " + item);
}
쿼리 메소드 : 스프링 데이터 JPA에서 제공하는 핵심 기능 중 하나. Repository 인터페이스에 간단한 네이밍 이용해 메소드 작성 시 원하는 쿼리 실행 가능
find : 가장 많이 사용하는 문법. 엔티티 이름은 생략 가능, By 뒤에는 검색시 사용할 변수의 이름 적어줌.
find + (엔티티 이름) + By + 변수이름
상품 이름 이용해 데이터 조회하는 예시
- ItemRepository에 findByItemNm 메소드 추가
package com.shop.repository;
import com.shop.entity.Item;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ItemRepository extends JpaRepository<Item, Long>{
List<Item> findByItemNm(String item);
}
- ItemNm(상품명)으로 데이터 조회 위해 By 뒤에 필드명인 ItemNm을 메소드 이름에 붙여줌. 엔티티 명은 생략 가능. findItemByNm 대신 findByItemNm으로 메소드 명 만들어줌. 매개변수로 검색시 사용할 상품명 변수 넘겨줌.
테스트 코드 추가
package com.shop.repository;
/* 기존 임포트 생략 */
@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
class ItemRepositoryTests {
@Autowired
ItemRepository itemRepository;
/* 기존 코드 생략 */
public void createItemList() {
for(int i=1; i<=5; i++) {
Item item = new Item();
item.setItemNm("테스트 상품"+i);
item.setPrice(10000+i);
item.setItemDetail("테스트 상품 상세 설명"+i);
item.setItemSellStatus(ItemSellStatus.SELL);
item.setStockNumber(100);
item.setRegTime(LocalDateTime.now());
item.setUpdateTime(LocalDateTime.now());
Item savedItem = itemRepository.save(item);
}
}
@Test
@DisplayName("상품명 조회 테스트")
public void findByItemNmtests() {
createItemList();
List<Item> itemList = itemRepository.findByitemNm("테스트");
for(Item item : itemList)
System.out.println("item : " + item);
}
}
}