본인의 신상에 대한 기준은 등록한지 7-14일 이내의 상품이다.
먼저 7일로 가정하자.
1, 표시
신상 여부 표시하는 isNew 필드를 Vo에 추가한다.
고정값이 아니기에 db에는 없어도 된다.
Vo
private Date pdate;
private boolean isNew; //등록일에 따라 신상 여부 표시용
//신상 여부 체크
public void checkIfNew() {
LocalDate today = LocalDate.now();
LocalDate productDate = pdate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
this.isNew = ChronoUnit.DAYS.between(productDate, today) <= 7; //등록일 기준 첫 7일간 '신상' 표시
}
public boolean isNew() {
return isNew;
}
Front에는 아래 한 줄만 추가하면 끝~
<a th:if="${m.isNew}" th:text="'신상'" class="sinsang" ></a>
2, 조회
첫인상을 주는 index.html에도 top신상을 출력하고 싶었다.
Mapper
//신상 top4
@Select("SELECT product_code, pname, pdate, "
+ "pimgStr, pprice, pdelifee, category "
+ "FROM products "
+ "WHERE DATEDIFF(CURDATE(), pdate) <= 7 "
+ "ORDER BY pdate DESC "
+ "LIMIT 4")
List<PrdVo> topNewPrdList();
Ctrl
@GetMapping("/index")
public String index(Model model) {
System.out.println("templates index + top제품");
...
//신상 top4
List<PrdVo> newList = prdSvc.topNewPrdList();
model.addAttribute("newList", newList);
return "index";
}
결과: