Helmi

쿼리 메소드 - 1 본문

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);
		}
	}
}

실행시 결과

'SpringBoot' 카테고리의 다른 글

게시판 프로젝트 - pom.xml 설정  (0) 2023.04.26
쿼리 메소드 -2  (0) 2023.03.17
Repository 설계하기  (0) 2023.03.14
Entity 매핑 관련 어노테이션  (0) 2023.03.13
상품 엔티티 설계  (0) 2023.03.13