为了账号安全,请及时绑定邮箱和手机立即绑定

请教一个更加优雅的实现业务中的分页加载的问题?

请教一个更加优雅的实现业务中的分页加载的问题?

哆啦的时光机 2019-03-01 10:56:33
在负责学校下学期图书馆的项目的一部分,现在碰到了一个业务设计的困难。 比如说在首页的话,我计划当学生查询相关的信息的时候全部采用ajax加载,不是很习惯很多网站比如知乎那种拖动到底部自动加载。我的想法是在底部设置一个分页的选项,每一页显示15条记录,文章全部采用ajax加载。 这样sql语句大概就是select xxx from xxx condition limit 15 offset xxx。但是现在由于要做分页,我必须要知道一个学生总共有多少条记录在数据库中,前端才好设计,总记录可以通过sql语句select count(*) from xxx condition查询出来,然后将总记录保存在前端中。 如果这样的话,必须要为拆分成两条sql语句查询,感觉不是很优雅,请问有什么更加优雅的实现方案么? ps: 因为在系统中有很多相似的业务都是要采用类似的分页设计,每次都这样使用两条sql语句分开查询太不优雅了。 补充 答主好像都没看请题目。一位是答的就是sql语句1,另外一位说的是前端。 多谢各位网友的回答,问题已解决,看来只能采用两条sql语句了 ^_^
查看完整描述

8 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

var start = 页标 - 1;
$.get("url?start=" + start * 15,function(){});
$start = $_GET["start"];
$end = $start + 15;
$sql = "select * from table limit {$start}, {$end}"; 
select a.*, b.count from table a, (select count(*) as count from table ) b LIMIT 1,15
查看完整回答
反对 回复 2019-03-01
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

不用想了,必须是两条的.
要一条也行:
select * from table
union
select 0, 0...., count(*) from table

查看完整回答
反对 回复 2019-03-01
?
杨魅力

TA贡献1811条经验 获得超6个赞

这很正常。如果想用一条sql解决,就把所有对象从数据库里查出来再做一系列操作,但搞不好你的内存就爆掉了。

查看完整回答
反对 回复 2019-03-01
?
BIG阳

TA贡献1859条经验 获得超6个赞

不用想了 必须是两条 。分页的实现 定义一个泛型类page<T> 里面放什么 需要我说的更详细吗?

查看完整回答
反对 回复 2019-03-01
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

试试PageHelper,就一条sql语句,甚至不需要limit

查看完整回答
反对 回复 2019-03-01
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

题主别想了, 必须两条sql, 但是mybatis有个分页插件PageHelper,用法很简单,第一条sql不需要你写,插件会实现。

查看完整回答
反对 回复 2019-03-01
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

要优雅的分页 分页的插件很多的

查看完整回答
反对 回复 2019-03-01
  • 8 回答
  • 0 关注
  • 563 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号