상품 목록

루민 ·2023년 4월 11일
0

📝상품 목록 화면 미리보기



📝ItemService

    @Transactional(readOnly=true)
    public List<Item> findItems() {
        return itemRepository.findAll();
    }
  • 데이터베이스에 저장되어있는 모든 상품 정보를 Select 합니다.
  • SELECT * FROM ITEM;


📝ItemController

    /**
     * 상품 목록 조회
     */
    @GetMapping("/items")
    public String items(Model model) {

        List<Item> itemList = itemService.findItems();

        //엔티티 -> DTO
        List<ItemDto> itemListDto = itemList.stream()
                .map(item -> new ItemDto(item))
                .collect(Collectors.toList());

        model.addAttribute("itemList", itemListDto);

        return "item/itemList";
    }
  • DI한 itemService를 통해 모든 아이템 정보를 찾아옵니다.
  • view layer에 모델로 데이터를 넘겨줄 때는 엔티티가 노출되지 않도록 DTO로 변환해서 넘겨주었습니다.


📝itemList.html

<body>

<div layout:fragment="content" class="container">
    <div  class="py-5 text-center">
        <h2>등록된 상품 목록</h2>
    </div>
    <br>


    <div>
        <table th:name="dd" class="table table-striped">
            <thead>
            <tr>
                <th>상품명</th>
                <th>가격</th>
                <th>재고수량</th>
                <th>상품 설명</th>
                <th></th>
            </tr>
            </thead>
            <tbody>
            <tr th:each="item : ${itemList}">
                <tg th:hidden th:field="${item.id}"></tg>
                <td th:text="${item.name}"></td>
                <td th:text="${item.price}"></td>
                <td th:text="${item.stockQuantity}"></td>
                <td th:text="${item.description}"></td>
                <td>
                    <a href="#" th:href="@{/items/{id}/edit (id=${item.id})}"
                       class="btn btn-primary" role="button">수정</a>
                </td>
            </tr>
            </tbody>
        </table>
    </div>
</div> <!-- /container -->
</body>
</html>
  • 상품 목록을 보여주는 html을 작성하였습니다.
  • 상품 수정은 상품 목록을 통해 수정 가능하도록 하였습니다.
  • 각각 다른 아이템들을 수정하기 위해 수정 버튼에 primary key인 아이디를 링크로 달아주었습니다.

0개의 댓글