SpringBoot專案新增新聞首頁與詳情頁
阿新 • • 發佈:2020-07-31
1、在New、Tag和Type的Repository介面中新增相應的資料庫查詢語句與對應方法頭
NewRepository中新增:
@Query("select n from News n where n.title like ?1 or n.content like ?1") Page<News> findByQuery(String query, Pageable pageable); @Query("select n from News n where n.recommend=true") List<News> findTop(Pageable pageable);
TagRepository中新增:
@Query("select t from Tag t")
List<Tag> findTop(Pageable pageable);
TypeRepository中新增:
@Query("select t from Type t")
List<Type> findTop(Pageable pageable);
2、在New、Tag和Type的Service介面中新增相應的顯示和搜尋方法頭,New中額外新增樣式轉化方法頭
NewService中新增:
//主頁顯示新聞列表 Page<News> listNew(Pageable pageable);//主頁推薦最新新聞列表 List<News> ListRecommendNewTop(Integer size); //全域性搜尋 Page<News> listNew(String query,Pageable pageable); News getAndConvert(Long id);
TagService中新增:
List<Tag> listTag(String ids);
List<Tag> listTagTop(Integer size);
TypeService中新增:
List<Type> listTypeTop(Integer size);
3、在相應的Service中進行這些方法的實現;以List<News> ListRecommendNewTop(Integer size)和List<Tag> listTagTop(Integer size)為例
public List<News> ListRecommendNewTop(Integer size) { Sort sort =Sort.by(Sort.Direction.DESC,"updateTime"); Pageable pageable= PageRequest.of(0,size,sort); return newRepository.findTop(pageable); }
public List<Tag> listTagTop(Integer size) { Sort sort =Sort.by(Sort.Direction.DESC,"newsList.size"); Pageable pageable= PageRequest.of(0,size,sort); return tagRepository.findTop(pageable); }
4、在主頁控制類中定義並實現主頁,查詢頁,詳情頁的前後端互動類;以search為例
@PostMapping("/search") public String search(@PageableDefault(size=3,sort = {"updateTime"},direction = Sort.Direction.DESC)Pageable pageable, @RequestParam String query, Model model){ model.addAttribute("page",newService.listNew("%"+query+"%",pageable)); model.addAttribute("query",query); return "search"; }