请问,如何用一条SQL查询出分页的数据和总记录数啊?MySQL的!不用存储
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问,如何用一条SQL查询出分页的数据和总记录数啊?MySQL的!不用存储相关的知识,希望对你有一定的参考价值。
请问,如何用一条SQL查询出分页的数据和总记录数啊?mysql的!不用存储过程,就是直接的sql
的确要查询两次的,因为计算总记录数是使用的聚合函数count(),如果你想一起查询出来,就要使用分组,那样也麻烦,对数据库的操作要使用细粒度的操作,可以使用事务来控制两次查询,用同一个connection,这样可以避免两次查询导致两次不同进程之间的连接操作 参考技术A 可以这样用一条sql解决SELECT 0,'','',COUNT(*) num FROM USER WHERE id >5
UNION
SELECT id,user_name,user_password,0 FROM USER WHERE id >5 LIMIT 2,5;
11.分页技术
分页的实现过程
1.前台传入 想要访问的页码,如我想访问第5页了
2.后台接收到这个页码,再查询出总记录数(总记录数用于得到共有多少页)
3.根据页码 和 总记录数,创建出一个Page对象 (这个Page对象是分页的核心)
4.可以根据这个Page对象里面的方法,得到我要查询的第5页数据的 startindex 起始位置,和一页显示多少记录
5.有了这两个参数,就可以使用 limit 语句,得到第5页的具体数据,将其封装到Page对象中,返回给前台显示
6.首次访问 ,页码为 null ,即访问第一页数据
这个Page类的主要代码:
1 private List list; 2 private int totalpage; //记住总页数 3 4 private int totalrecord; 5 private int pagesize = 5; 6 7 private int pagenum; //代表用户想看的页 8 private int startindex;//代表用户想看的页的数据从数据库哪个地方开始取 9 10 public page(int totalrecord,int pagenum) { 11 12 this.totalrecord = totalrecord; 13 if(this.totalrecord % this.pagesize == 0) { 14 this.totalpage = this.totalrecord/this.pagesize; 15 } 16 else { 17 this.totalpage = this.totalrecord/this.pagesize + 1; 18 } 19 20 this.pagenum = pagenum; 21 this.startindex = (this.pagenum-1)*this.pagesize; 22 23 }
//业务方法
1 public page getPageDate(String pagenum) { 2 3 int totalrecord = dao.getTotalRecord(); 4 5 if(pagenum == null) { 6 //代表用户想看第一页的数据 7 page pa = new page(totalrecord,1); 8 // 9 List list = dao.getPageDate(pa.getStartindex(), pa.getPagesize()); 10 pa.setList(list); 11 return pa; 12 } 13 else { 14 page pa = new page(totalrecord,Integer.parseInt(pagenum)); 15 List list = dao.getPageDate(pa.getStartindex(), pa.getPagesize()); 16 pa.setList(list); 17 return pa; 18 } 19 }
以上是关于请问,如何用一条SQL查询出分页的数据和总记录数啊?MySQL的!不用存储的主要内容,如果未能解决你的问题,请参考以下文章