일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스프링 메일 전송
- 스프링 프로젝트
- 스프링 포트폴리오
- 스프링 프로젝트 설정
- 스프링 이미지
- spring 프로젝트
- 스프링 프로젝트 기본 설정
- 인증번호 전송
- Bcrypt
- 로그인 기능
- 삭제 구현
- 이미지 출력
- 스프링 게시판 구현
- 스프링 쇼핑몰
- oracle 설치방법
- 정규표현식
- 회원가입 기능
- ResponseEntity
- 스프링 게시판
- 스프링 HikariCP
- 쇼핑몰 포트폴리오
- 파일 업로드
- spring 쇼핑몰
- BCrypt 적용
- 쇼핑몰 프로젝트
- 스프링 파일 삭제
- 스프링 쇼핑몰 프로젝트
- 스프링 업로드
- 로그아웃 기능 구현
- arraylist
- Today
- Total
Kim VamPa
[Spring][쇼핑몰 프로젝트][43] 주문 현황 - 1 본문
프로젝트 Github : https://github.com/sjinjin7/Blog_Project
프로젝트 포스팅 색인(index) : https://kimvampa.tistory.com/188
목표
주문 현황
'관리자 페이지'에서 주문 현황을 볼 수 있는 페이지 구현을 목표로 합니다.
순서
1. 개요
2. Mapper
3. Service
4. Controller
1. 개요
'관리자 페이지'의 좌측 목록에 "주문 현황"페이지를 이동할 수 있는 링크를 추가해줄 것인데, 사용자가 해당 링크를 클릭했을 때 DB에 등록된 주문 정보가 출력이 되도록 구현할 것입니다. 더불어 회원 아이디를 검색할 수 있도록 '검색' 기능 또한 구현할 것입니다. (주문 현황 페이지는 어디까지나 '주문 취소' 기능을 사용하기 위한 인터페이스 용도로 구현하는 것이기 때문에 단순히 주문 몇몇 정보가 출력되도록 간단히 구현할 것입니다.)
이번 구현은 여태 해왔던 검색, 페이징 기능 구현과 동일하기 때문에 빠르게 구현 코드 위주로 진행 하고자 합니다.(자세한 설명은 "게시판"포스팅의 '페이징, 검색' 기능 구현을 참고하시면 됩니다.) 이번 포스팅에서는 서버 측 구현 다음 포스팅에서는 뷰 측 구현을 목표로 합니다.
2. Mapper
주문 현황 페이지에 출력 할 DB에 저장된 '주문 정보'와 페이지 번호 버튼을 만드는 데 사용될 '주문 데이터 총 개수' 정보를 반환해주는 Mapper 메서드를 만들어 주겠습니다.
AdminMapper.java
com/vam/mapper 패키지의 AdminMapper.java 인터페이스에 아래 두 개의 메서드 선언부를 추가 해줍니다.(관리자 페이지에 사용될 Mapper 메서드라고 생각이 되어 AdminMapper에 추가해주었습니다.)
/* 주문 상품 리스트 */
public List<OrderDTO> getOrderList(Criteria cri);
/* 주문 총 갯수 */
public int getOrderTotal(Criteria cri);
검색 조건(현 페이지, 검색 키워드 등)에 맞는 쿼리가 생산되어야 하기 때문에 조건이 될 데이터로서 Criteria를 파라미터로 부여했습니다.
AdminMapper.xml
src/main/resources/com/vam/mapper 경로에 있는 AdminMapper.xml에 앞서 선언한 메서드가 실행할 쿼리문을 작성합니다.
Oracle
<!-- 주문 리스트 -->
<select id="getOrderList" resultType="com.vam.model.OrderDTO">
<![CDATA[
select *
from(
select rownum rn, orderId, memberId, orderstate, orderdate
from vam_order
where rownum <= #{pageNum} * #{amount}
]]>
<if test="keyword != null">
and memberId like '%'||#{keyword}||'%'
</if>
<![CDATA[
order by orderdate desc
)
where rn > (#{pageNum} -1) * #{amount}
]]>
</select>
<!-- 상품 총 개수 -->
<select id="getOrderTotal" resultType="int">
select count(*) from vam_order
<if test="keyword != null">
where memberId like '%'||#{keyword}||'%'
</if>
</select>
MySQL
<!-- 주문 리스트 -->
<select id="getOrderList" resultType="com.vam.model.OrderDTO">
select orderId, memberId, orderstate, orderdate
from vam_order
<if test="keyword != null">
where memberId like concat('%',#{keyword}, '%')
</if>
order by orderdate desc
limit #{skip}, #{amount}
</select>
<!-- 상품 총 개수 -->
<select id="getOrderTotal" resultType="int">
select count(*) from vam_order
<if test="keyword != null">
where memberId like concat('%',#{keyword}, '%')
</if>
</select>
3. Service
AdminService.java 인터페이스
앞서 만든 Mapper 메서드를 호출하는 Service 메서드를 만들어 주겠습니다. com/vam/service 패키지의 AdminService 인터페이스에 아래와 같이 두 개의 메서드 선언부를 추가합니다.
/* 주문 상품 리스트 */
public List<OrderDTO> getOrderList(Criteria cri);
/* 주문 총 갯수 */
public int getOrderTotal(Criteria cri);
AdminServiceImp.java
인터페이스에서 선언한 메서드를 오버라이딩 하여 구현부를 작성해 줍니다.
/* 주문 상품 리스트 */
@Override
public List<OrderDTO> getOrderList(Criteria cri) {
return adminMapper.getOrderList(cri);
}
/* 주문 총 갯수 */
@Override
public int getOrderTotal(Criteria cri) {
return adminMapper.getOrderTotal(cri);
}
4. AdminController
'주문 현황 페이지' 요청을 수행하는 URL 매핑 메서드를 만들어 주겠습니다. com/vam/controller 패키지에 있는 AdminController 클래스에 URL 매핑 메서드를 추가해줍니다. 파라미터로 검색 조건을 전달받을 수 있도록 Criteria를 부여해주었고, 뷰로 데이터를 전달하기 위해 Model을 부여해주었습니다.
/* 주문 현황 페이지 */
@GetMapping("/orderList")
public String orderListGET(Criteria cri, Model model) {
return "/admin/orderList";
}
구현부에는 주문 페이지에서 출력시켜야 할 주문 정보와 페이지 번호 버튼을 만드는데 필요로 한 페이지 정보를 뷰로 전달하는 코드를 작성합니다.
List<OrderDTO> list = adminService.getOrderList(cri);
if(!list.isEmpty()) {
model.addAttribute("list", list);
model.addAttribute("pageMaker", new PageDTO(cri, adminService.getOrderTotal(cri)));
} else {
model.addAttribute("listCheck", "empty");
}
다음 포스팅에서 뷰 처리를 진행합니다.
REFERENCE
DATE
- 2020.12.27
'스프링 프레임워크 > 쇼핑몰 프로젝트' 카테고리의 다른 글
[Spring][쇼핑몰 프로젝트][44] 주문 취소 - 1 (0) | 2021.12.29 |
---|---|
[Spring][쇼핑몰 프로젝트][43] 주문 현황 - 2 (0) | 2021.12.28 |
[Spring][쇼핑몰 프로젝트][42] 주문 구현 - 3 (2) | 2021.12.21 |
[Spring][쇼핑몰 프로젝트][42] 주문 구현 - 2 (0) | 2021.12.20 |
[Spring][쇼핑몰 프로젝트][42] 주문 구현 - 1 (0) | 2021.12.17 |