如何高效率读取数据库并分页显示(利用limit)

    这几天在做一个项目,其中涉及到了文章查看的功能,显然就会涉及到分页内容了。下面就讲下我在这里面用的到技巧和遇到的问题。

    首先需要了解实现分页要获取哪些数据。总记录数totalCount,当前页数currentPage,每页显示数pageSize。

  首先我从数据库中读取数据时,我是仅读取我要显示的条数,我利用了limit(limit用法可以上网搜索资料),然后记录当前页currentPage,当下一次访问时,我会根据当前页计算出这次应该从哪读取,于是totalCount-currentPage*pageSize,计算出当前应该从哪里开始读取,在计算总页的时候使用(totalSize + pageSize - 1) / pageSize,这样就能够很简单的实现分页了。(但是我在数据中是从后往前读取的,这样先提取后面的数据)

   分页实现了,但是问题又来了,一般都是最新的文章应该在最前面显示,但是上面的做法却是最新的在最后面,那怎么办呢?当时我想的是用limit和order by组合使用,但是总是出错,后来查资料才发现是因为溢出的问题。如果先使用order by,再limit,显然这样做法每次都得对整张表进行操作,那么如果先limit,再order  by呢,乍一看似乎可以,但是实践发现不行,溢出了。我起先想用的是视图来解决。limit提取出来放在视图中,然后order by。但是这样操作明显很麻烦,后来我用的方法是,不改变读取的结果,我在遍历集合的时候进行来操作他。所以我在操作集合的时候,利用了ResultSet中的last()和isBeforeFirst()这两个函数,从集合后往前遍历就ok了。(因为数据在数据库中存储是时间顺序的,结果集取出来肯定是按照时间排序的,我往前遍历结果正好是我要的)。

   可能说得不是很清楚,但是我最后确实实现了,也知道了怎么进行高效率的读取数据库进行分页。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值