
상품 테이블 & Vo에 category (varchar/String) 필드 추가한다.
Mapper
//category별 모아보기
@Select("SELECT * FROM products "
+ "WHERE category = #{category} "
+ "ORDER BY product_code DESC")
List<PrdVo> prdListByCtgr(PrdVo vo);
Ctrl
@GetMapping("prdListByCtgr") //category별 모아보기
public String prdListByCtgr(Model model, PrdVo vo) {
System.out.println("prdList");
List<PrdVo> li=prdSvc.prdListByCtgr(vo);
model.addAttribute("li", li);
model.addAttribute("lisize", li.size());
if (!li.isEmpty()) {
model.addAttribute("ctgr", li.get(0).getCategory()); //첫째 결과의 category 대표로 출력
}
return "prd/prdListByCtgr";
}
전체 리스트에는 경로 생성
<div>
<input type="hidden" th:value="${m.category}">
<a th:text="'#' + ${m.category}" type="button" class="subbtnsmall"
th:href="@{/prd/prdListByCtgr(category=${m.category})}"></a>
</div>
카테고리별 리스트
<div style="margin-bottom: 15px;"
th:utext="'카테고리 <strong>#' + ${ctgr} +'</strong>에 상품 <strong>'+ ${lisize} + '건</strong>이 있습니다.'">
</div>
<!-- 그 다음은 반복문 -->
상품 추가 시에는,
Mapper sql문에 #{category} 추가하고,
Ctrl:
vo.setCategory(request.getParameter("category"));
추가 양식:
<tr>
<th>category</th>
<td>
<select name="category" required>
<option value="키링">키링</option>
<option value="와펜">와펜</option>
<option value="인형">인형</option>
<option value="브로치핀">브로치핀</option>
</select>
</td>
</tr>
연습 삼아 제품당 카테고리 키값 쌍을 하나씩만 부여했다.
추후에는 tag(hashtag 같은) 추가해서 배열로도 처리해봐야겠지..