老师:你好。最近工作中正好也在写一些列表方面的接口,正好也可以用上咱们这边授课中所提到的PageHelper插件了,但是,今天开发要求中,突然多了一个要求,就是说今后带有分页查询的列表功能,都禁止使用PageHelper了,就用传统手工分页的代码写法来实现,原因是:PageHelper是会一下子拿到所有的数据后,再通过代码层做内存分页的,内存压力会比较大。我这边觉得用不用这个插件本身,肯定有好的方面(比如代码更简洁了),也有不好的方面,这个是毋庸置疑的。但是,今天给到我们这边的这个禁用的原因,内存压力会比较大,我觉得不是很合理,因为我看了下我们工作中的项目,包括咱们这边的课程项目里面,其实,分页数据的获取,还是用了SQL层面的分页实现语句,并不是我们这边宣传的是一下子都从数据表中把数据都拿回来之后,再通过代码层面做的内存分页来实现拿到分页数据的。这块,想请教一下老师对这个插件的一些见解。咱们课程项目里面,应用PageHelper涉及到的分页SQL日志语句如下:
==> Preparing: SELECT count(0) FROM article WHERE ((is_appoint = ? AND is_delete = ? AND article_status = ?)) ==> Parameters: 0(Integer), 0(Integer), 3(Integer) <== Columns: count(0) <== Row: 46 <== Total: 1 ==> Preparing: SELECT id,title,category_id,article_type,article_cover,is_appoint,article_status,publish_user_id,publish_time,read_counts,comment_counts,mongo_file_id,is_delete,create_time,update_time,content FROM article WHERE ( ( is_appoint = ? and is_delete = ? and article_status = ? ) ) order by publish_time DESC LIMIT ? ==> Parameters: 0(Integer), 0(Integer), 3(Integer), 15(Integer)
需要先查询总条数count(0),然后再SQL分页查询需要获取的单页数据,我觉得就是最常规的分页数据的获取流程而已。
一课收获分布式系统开发,微服务核心技术和中间件企业生产落地
了解课程