1. 程式人生 > 實用技巧 >SpringBoot專案新增新聞首頁與詳情頁

SpringBoot專案新增新聞首頁與詳情頁

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";
    }