hyeonga_code

reProject_30_정렬기능 추가 본문

Project_WEATHERWEAR

reProject_30_정렬기능 추가

hyeonga 2024. 1. 24. 06:59
반응형

 

reProject_29_관리자 주문 관리 페이지

2024.01.19 주문은 상세 페이지를 따로 작성하지 않고 주문 목록에서 간단한 수정을 할 수 있게 구현하려고 한다. 기존의 테이블은 orders에 orderStatus가 있어 주문번호가 동일한 여러 상품을 일괄로

hyeonga493.tistory.com

2024.01.19

현재 상품 관리, 주문 관리 페이지에 버튼으로 최신순/이름순 등의 정렬 기능을 추가하기 위해 만들어 두었던 부분을 작업

기존에 작업했던 기능으로 사용하는 부분이 있으므로 추가로 생성해서 다른 작업과 충돌되지 않도록 한다.

 

1. SearchOrderby.java 클래스 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.w2.util;
 
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
 
@Getter
@Setter
@ToString
public class SearchOrderby extends Pagination {
    private String searchType;
    private String keyword;
    private String orderby;
}
 

 

2. Controller 수정

-- Parameter로 받아오는 값 추가

-- Search로 받아오던 매개변수 SearchOderby로 수정

	@RequestMapping("orderList.mdo")
	public String orderList(Model model, @RequestParam(required = false, defaultValue = "1") int page,
			@RequestParam(required = false, defaultValue = "1") int range, @RequestParam(required = false, defaultValue = "orderName") String searchType,
			@RequestParam(required = false) String keyword, @RequestParam(required = false, defaultValue = "orderDate") String orderby, @ModelAttribute("search") SearchOrderby search) {
		
		// 검색
		model.addAttribute("search", search);
		search.setSearchType(searchType);
		search.setKeyword(keyword);
		search.setOrderby(orderby);
		
		// 전체 게시글 개수
		int listCnt = orderService.getOrderListCnt(search);
		
		// 검색 페이지 정보
		search.pageInfo(page, range, listCnt);
		// 페이징
		model.addAttribute("pagination", search);
		// 화면 출력
		model.addAttribute("orderList", orderService.getOrderList(search));
		
		return "order/orderList";
	}

 

3. Service, DAO 수정

4. mapping파일에 값 설정

<select id="getOrderList" resultType="hashMap">
		SELECT od.orderId, od.orderDate, od.clientId, 
			cl.clientName, cl.clientNum, di.deliverNum,
	        ad.addressName, ad.addressNum, ad.addressPostNum, ad.address1, ad.address2, ad.addressMemo, SUBSTRING(oi.optionId, 1,9) as '옵션값',
	        pr.productName, pr.productId, SUBSTRING(oi.optionId, 10, LENGTH(oi.optionId)) as optionName, oi.orderProCnt, oi.orderTotal, oi.orderStatus, 
	        od.orderPrice, od.usedPoint, ci.couponPrice, pi.paymentMethod, pi.paymentDate, pi.paymentStatus
		FROM orders od
		LEFT JOIN orders_info oi ON (od.orderId=oi.orderId)
		LEFT JOIN client cl ON (od.clientId=cl.clientId)
		LEFT JOIN client_address ad ON (od.clientId=ad.clientId AND od.addressId=ad.addressId)
		LEFT JOIN payment_info pi ON (od.orderId=pi.orderId)
		LEFT JOIN deliver_info di ON (od.orderId=di.orderId)
		LEFT JOIN coupon_info ci ON (od.couponId=ci.couponId)
		LEFT JOIN product pr ON (SUBSTRING(oi.optionId, 1, 9)=pr.productId)
		<trim prefix="WHERE" prefixOverrides="AND|OR">
			<if test="keyword != null and keyword != ''">
				<if test="searchType == 'orderId'">
					AND od.orderId like CONCAT('%', #{keyword}, '%')
				</if>
				<if test="searchType == 'clientId'">
					AND od.clientId like CONCAT('%', #{keyword}, '%')
				</if>
			</if>
		</trim>
		ORDER BY od.orderId, ${ orderby }
		LIMIT #{startList}, #{listSize};
	</select>
반응형