接上:
https://blog.csdn.net/qq_43923042/article/details/107718118
上面的已经基本完成后台管理功能了,接下来是前台的制作
上面是完成图,可以看到主要需要分类,推荐,新闻,推荐四个列表,即要传这四个参数到前端。
以新闻为例子
1、DAO层:
public interface NewRepository extends JpaRepository<News, Long>, JpaSpecificationExecutor<News> {
@Query("select m from News m where m.Title like ?1 or m.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);
}
由于其他都是只需要一部分数据,且大概步骤相同,在此不多加描述
2、Service层:主要用到以下函数
public Page<News> listNews(Pageable pageable) {
return newRepository.findAll(pageable);
}
//主页推荐
@Override
public List<News> listRecommentNewTop(Integer size) {
Sort sort = Sort.by(Sort.Direction.DESC, "updateTime");
Pageable pageable = PageRequest.of(0, size, sort);
return newRepository.findTop(pageable);
}
3、Controller层:
@Controller
public class IndexCotroller {
@Autowired
private TypeService typeService;
@Autowired
private TagService tagService;
@Autowired
private NewService newService;
@GetMapping("/")
public String index(@PageableDefault(size = 5, sort = {"updateTime"}, direction = Sort.Direction.DESC) Pageable pageable, Model model) {
model.addAttribute("page", newService.listNews(pageable));
model.addAttribute("types", typeService.listTypeTop(5));
model.addAttribute("tags", tagService.listTagTop(5));
model.addAttribute("recommendNews", newService.listRecommentNewTop(5));
return "index";
}
@PostMapping("/search")
public String search(@PageableDefault(size = 5, sort = {"updateTime"}, direction = Sort.Direction.DESC) Pageable pageable,
@RequestParam String query, Model model) {
model.addAttribute("page", newService.listNews("%" + query + "%", pageable));
model.addAttribute("query", query);
return "search";
}
@RequestMapping("/news/{id}")
public String news(@PathVariable Long id, Model model) {
model.addAttribute("news", newService.getAndConvert(id));
return "new";
}
}
新闻详情的话只要是点击新闻列表就能点进去,就是一个跳转的问题,传过来的时候把id传过来再将数据返回新页面就好了