Echo 的帖子列表与分页是怎么做的
共 929字,需浏览 2分钟
·
2021-04-21 18:03
业务逻辑这个模块的文章后续应该都会改成一元钱的付费文章了,emmm,算是一点精神上的慰藉吧。毕竟这种类型的文章不像 Java 八股文那样铺天盖地都是现成的博客、书籍可以参考,完全自己写,所以写一篇通俗易懂的教程文章确实需要花费很大的精力,而且对我个人的提升几乎为 0,有时候遇到没有礼貌的拿来主义党真是得郁闷好一会儿,所以一两块钱算是对我的一点酬劳吧,小牛肉出品,质量保证!各位小伙伴各取所取就好,能自己搞懂的就没必要付费了(抱拳)。
概述
帖子列表,也就是 Echo 社区的首页,整体实现思路非常简单,传统的 MVC 三层架构,去数据库利用 limit 语句分页查询帖子,不过由于涉及到分页显示的问题,所以这里有必要开一篇文章单独说一下。
Dao 层
我们先来看看 mapper 接口是如何定义的,下面代码详见 DiscussPostMapper
各位可以看到 selectDiscussPosts
方法我们传入的参数比较多,适应性比较强,这样同一个功能的接口我们只需要写一个就行了。
为啥说它适应性比较强,我来解释一下:对于查询用户帖子这个功能,不仅仅只有 Echo 社区的首页有这个需求,在【个人中心-我的帖子】这个模块中也有这个需求。最简单的想法可能就是分别定义两个接口,一个用来根据用户 id 查询帖子,一个查询所有用户的帖子,对吧?这样一看,各位是不是觉得我们一个接口完成两个需求这样的设计就技高一筹了。
也就是说,我们不仅需要查询所有用户的帖子,还可能需要查询某一个特定用户的帖子。所以,在 selectDiscussPosts
这个接口中我们传入一个动态的参数 userId
,为什么说它是动态的呢?因为在 MyBatis 中我们可以使用 <if test>
实现动态的拼接 SQL 语句,我们来看看这个接口的具体实现你就知道了,以下代码片段详见 discusspost-mapper.xml
: