최신글
hyeonga_code
reProject_30_정렬기능 추가 본문
반응형
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>
반응형
'Project_WEATHERWEAR' 카테고리의 다른 글
reProject_32_배송관리 페이지 작업 (1) | 2024.01.26 |
---|---|
reProject_31_JSP Spring Excel 저장하기 기능 (1) | 2024.01.26 |
reProject_29_관리자 주문 관리 페이지 (0) | 2024.01.24 |
reProject_28_상품 등록 페이지/상품 상세 페이지/삭제/수정 (0) | 2024.01.23 |
reProject_27_체크박스 전체선택/전체해제 버튼으로 처리하기 (0) | 2024.01.23 |