中软国际暑期实习day12(2020.08.21)-Spring Boot项目实战(新闻项目-首页设计及评论功能)

今天在昨天的基础上完成首页的设计

文章目录

1.首页设计

首页最重要的是显示按类别排序前几的新闻、按标签排序前几的新闻和推荐的新闻以及提供搜索新闻的功能,核心代码如下所示

@GetMapping("/")
    public String index(@PageableDefault(size = 5, sort = "updateTime", direction = Sort.Direction.DESC) Pageable p,
                        Model model) {
        model.addAttribute("types", typeService.listTypeTop(3));

        model.addAttribute("tags", tagService.listTagTop(3));

        // 最新推荐  将recommend为true的新闻  通过更新事件做降序排序
        model.addAttribute("recommendNews", newsService.listRecommendNewsTop(3));
        model.addAttribute("page", newsService.listNews(p));
        return "index";
    }

    // 搜索
    @PostMapping("/search")
    public String search(@PageableDefault(size = 5, sort = "updateTime", direction = Sort.Direction.DESC) Pageable pageable,
                         @RequestParam String query, Model model) {
        // query 可能是匹配标题或者内容
        model.addAttribute("page", newsService.listNews("%" + query + "%", pageable));
        return "search";
    }
  • 显示按类别排序前几的新闻

按照分页显示的功能,选择前几项进行展示。

@Override
    public List<Type> listTypeTop(int i) {
        // 需求 查询新闻数量前i的分类
        // 利用分页 查询第一页数据 第一页数据量为i 排序方式为News集合的长度 降序排序

        Sort sort = Sort.by(Sort.Direction.DESC, "news.size");
        // of方法   参数一  查询页数的索引   参数二 为每页的数据量   参数三 排序方式
        Pageable p = PageRequest.of(0, i, sort);
        return typeRepository.findTop(p);
    }
@Query("select t from Type t")
    List<Type> findTop(Pageable p);
  • 按标签排序前几的新闻

按照分页显示的功能,选择前几项进行展示。

@Override
    public List<Tag> listTagTop(int i) {
        Sort sort = Sort.by(Sort.Direction.DESC, "newsList.size");
        Pageable p = PageRequest.of(0, i, sort);
        return tagRepository.findTop(p);
    }
@Query("select t from Tag t")
    List<Tag> findTop(Pageable p);

2.总结

在这里用到的“搜索”实际上是利用sql的模糊查询。

SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。

SELECT 字段 FROM 表 WHERE 某字段 Like 条件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值