(5/5) Item Entity, Repository, Test 실습 findBy+(변수명)+LessThanOrderBy+(변수명)+Desc Method > 스프링 부트

본문 바로가기

[개발] (5/5) Item Entity, Repository, Test 실습 findBy+(변수명)+LessThanOrderBy+(변…

필기자
2022-09-13 11:15 6,613 0

본문

Item Entity, Repository, Test 실습 findBy+(변수명)+LessThanOrderBy+(변수명)+Desc Method

 

kr/hull/shop/repository/ItemRepository.java 다음 내용 추가



public interface ItemRepository extends JpaRepository<Item, Long> {
    List<Item> findByItemNm(String itemNm); // find+(Entity명)+By+(변수명)으로 메소드 생성. Entity명 제거할 수 있음
    // List<Item> findItemByItemNm(String itemNm);

    List<Item> findByItemNmOrItemDetail(String itemNm, String itemDetail);

    List<Item> findByPriceLessThan(Integer price); // 입력된 price 미만 값 확인

    List<Item> findByPriceLessThanOrderByPriceDesc(Integer price); // 입력된 price 미만 값 확인 및 price 값 기준 정열
}

 

src/test/java/kr/hull/shop/repository/ItemRepositoryTest.java 다음 내용 추가



@SpringBootTest // 테스트 실행시 모든 Bean을 IoC 컨테이너에 등록 = 스프링부트 구동과 동일한 환경 조건
@TestPropertySource(locations="classpath:application-test.properties") // 테스트 실행시 우선되는 설정파일
class ItemRepositoryTest {
    @Autowired // 필드 Bean 주입
    ItemRepository itemRepository;

    @Test // Method 테스트 대상 지정
    @DisplayName("상품 저장 확인") // 테스트명
    public void createItemTest(){
        Item item = new Item();
        item.setItemNm("좋은 상품");
        item.setPrice(10000);
        item.setItemDetail("좋은 상품 설명");
        item.setItemSellStatus(ItemSellStatus.SELL);
        item.setStockNumber(100);
        item.setRegTime(LocalDateTime.now());
        item.setUpdateTime(LocalDateTime.now());
        Item savedItem = itemRepository.save(item);
        System.out.println(savedItem.toString());
    }

    public void createItemList(){
        for(int i=1; i<=10; 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 findByItemNmTest(){
        this.createItemList();
        List<Item> itemList = itemRepository.findByItemNm("좋은 상품 7");
        for(Item item : itemList){
            LOGGER.info(item.toString());
        }
    }

    @Test
    @DisplayName("상품명 or 상품 설명 확인")
    public void findByItemNmOrItemDetailTest(){
        this.createItemList();
        List<Item> itemList = itemRepository.findByItemNmOrItemDetail("좋은 상품 1", "좋은 상품 설명 5");
        for(Item item : itemList){
            System.out.println(item.toString());
        }
    }

    @Test
    @DisplayName("가격 LessThan 확인")
    public void findByPriceLessThanTest(){
        this.createItemList();
        List<Item> itemList = itemRepository.findByPriceLessThan(10005); // price 변수 가격이 10005 미만인 상품만 검색
        for(Item item : itemList){
            System.out.println(item.toString());
        }
    }

    @Test
    @DisplayName("가격 내림차순 조회 확인")
    public void findByPriceLessThanOrderByPriceDescTest(){
        this.createItemList();
        List<Item> itemList = itemRepository.findByPriceLessThanOrderByPriceDesc(10006); // price 변수 가격이 10006 미만인 상품만 후 내림차순 정열
        for(Item item : itemList){
            System.out.println(item.toString());
        }
    }    
}

 

결과 QUERY



    select
        item0_.item_id as item_id1_0_,
        item0_.item_detail as item_det2_0_,
        item0_.item_nm as item_nm3_0_,
        item0_.item_sell_status as item_sel4_0_,
        item0_.price as price5_0_,
        item0_.reg_time as reg_time6_0_,
        item0_.stock_number as stock_nu7_0_,
        item0_.update_time as update_t8_0_ 
    from
        item item0_ 
    where
        item0_.price<10006 
    order by
        item0_.price desc

 

결과

 

20220913111521_ddfa29dc4cb6a70c618839d7aa582e62_p662.png

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색