[Spring Boot] 8. Spring Boot Project (Store v2)_9.Order - List

김미숙's avatar
Mar 31, 2025
[Spring Boot] 8. Spring Boot Project (Store v2)_9.Order - List

header

<!DOCTYPE html> <html lang="en"> <head> <title>Store</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> </head> <body> <nav class="navbar navbar-expand-sm bg-dark navbar-dark"> <div class="container-fluid"> <a class="navbar-brand" href="/">Home</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#collapsibleNavbar"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="collapsibleNavbar"> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link" href="/join-form">회원가입</a> </li> <li class="nav-item"> <a class="nav-link" href="/login-form">로그인</a> </li> <li class="nav-item"> <a class="nav-link" href="/store/list">상품목록</a> </li> <li class="nav-item"> <a class="nav-link" href="/store/save-form">상품등록</a> </li> <li class="nav-item"> <a class="nav-link" href="/order/list">구매목록</a> </li> <li class="nav-item"> <a class="nav-link" href="/logout">로그아웃</a> </li> </ul> </div> </div> </nav> <!--네브바종료-->

OrderResponse

package com.metacoding.storev2.order; import lombok.Data; public class OrderResponse { @Data public static class OrderListPage { private Integer id; private String name; private Integer qty; private Integer totalPrice; public OrderListPage(Integer id, String name, Integer qty, Integer totalPrice) { this.id = id; this.name = name; this.qty = qty; this.totalPrice = totalPrice; } } }

OrderController

package com.metacoding.storev2.order; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import java.util.List; @RequiredArgsConstructor @Controller public class OrderController { private final OrderService orderService; @GetMapping("/order/list") public String orderList(HttpServletRequest request) { List<OrderResponse.OrderListPage> OrderListPage = orderService.구매목록(); request.setAttribute("models", OrderListPage); return "order/list"; } }

OrderService

package com.metacoding.storev2.order; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; @RequiredArgsConstructor @Service public class OrderService { private final OrderRepository orderRepository; public List<OrderResponse.OrderListPage> 구매목록() { return orderRepository.findAllJoinStore(); } }

OrderRepository

package com.metacoding.storev2.order; import jakarta.persistence.EntityManager; import jakarta.persistence.Query; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.List; @RequiredArgsConstructor @Repository public class OrderRepository { private final EntityManager em; public List<OrderResponse.OrderListPage> findAllJoinStore() { List<OrderResponse.OrderListPage> orderListPages = new ArrayList<>(); String sql = "select ot.id, st.name, ot.qty, ot.total_price from order_tb ot inner join store_tb st on ot.store_id=st.id order by ot.id desc"; Query query = em.createNativeQuery(sql); List<Object[]> objList = (List<Object[]>) query.getResultList(); for (Object[] obj : objList) { OrderResponse.OrderListPage olp = new OrderResponse.OrderListPage( (Integer) obj[0], (String) obj[1], (Integer) obj[2], (Integer) obj[3] ); orderListPages.add(olp); } return orderListPages; } }

order/list

{{> layout/header}} <div class="container mt-2"> <div class="mt-4 p-5 bg-light text-dark rounded-4"> <h1>구매목록 페이지</h1> <hr> <table class="mt-4 table table-hover"> <thead> <tr> <th>주문번호</th> <th>상품명</th> <th>구매개수</th> <th>총 가격</th> </tr> </thead> <tbody> {{#models}} <tr> <td>{{id}}</td> <td>{{name}}</td> <td>{{qty}}개</td> <td>{{totalPrice}}원</td> </tr> {{/models}} </tbody> </table> </div> </div> </body> </html>
Share article

parangdajavous