public Page<StockPrice> findAllByItmsNmOrSrtnCd(String query, int page) {
List<Sort.Order> sorts = new ArrayList<>();
sorts.add(Sort.Order.desc("basDt"));
Pageable pageable = PageRequest.of(page, 20, Sort.by(sorts));
if(query.charAt(0) <= '9' && query.charAt(0) >= '0') {
return stockPriceRepository.findAllBySrtnCd(query, pageable);
}else{
return stockPriceRepository.findAllByItmsNm(query, pageable);
}
}
입력받은 query를 바탕으로 종목명 또는 종목 코드로 검색하는 기능을 추가하였다.
@GetMapping("/stockprice")
public String showStockPricePage(Model model, @RequestParam(value="page", defaultValue="0") int page, @RequestParam(required=false) String query) {
if(query != null && !query.equals("")) {
Page<StockPrice> pagingStocks = stockPriceService.findAllByItmsNmOrSrtnCd(query, page);
model.addAttribute("paging", pagingStocks);
model.addAttribute("totalStocks", pagingStocks.getTotalElements());
return "stockprice";
}
Page<StockPrice> pagingStocks = stockPriceService.findAll(page);
model.addAttribute("paging", pagingStocks);
model.addAttribute("totalStocks", pagingStocks.getTotalElements());
return "stockprice";
}
query를 parameter로 받아 null이 아닐 때, 종목명 혹은 종목코드로 검색해온다.
public Page<StockPrice> findAll(int page, boolean isDesc) {
if(isDesc) {
List<Sort.Order> sorts = new ArrayList<>();
sorts.add(Sort.Order.desc("basDt"));
Pageable pageable = PageRequest.of(page, 20, Sort.by(sorts));
return stockPriceRepository.findAll(pageable);
}else {
Pageable pageable = PageRequest.of(page, 20);
return stockPriceRepository.findAll(pageable);
}
}
@GetMapping("/stockprice")
public String showStockPricePage(Model model, @RequestParam(value="page", defaultValue="0") int page, @RequestParam(required=false) String query , @RequestParam(defaultValue = "desc") String filter) {
if(query != null && !query.equals("")) {
Page<StockPrice> pagingStocks = stockPriceService.findAllByItmsNmOrSrtnCd(query, page, filter.equals("desc"));
model.addAttribute("paging", pagingStocks);
model.addAttribute("totalStocks", pagingStocks.getTotalElements());
model.addAttribute("query", query);
return "stockprice";
}
Page<StockPrice> pagingStocks = stockPriceService.findAll(page, filter.equals("desc"));
model.addAttribute("paging", pagingStocks);
model.addAttribute("totalStocks", pagingStocks.getTotalElements());
return "stockprice";
}
데이터가 어느 날짜를 기준으로 저장했는지 아는 것이 중요하기 때문에 추가적으로 필터를 구현하였다.