最近用学了一个ssh做了一个特殊的分页,怎么特殊呢?上才艺!
可以看到起始只能显示1,2,3后面就是…,接下来
对就是…后面是五六七。的效果。
下面说明具体步骤。
sql语句有这条“select * from 表 limit ?,?”.两个占位符,第一个代表起始位置也就是初始值是从第几开始进行的(最初是为0),第二个代表每次的个数即每次可以查询几条。
了解这行sql语句就要分析之后需要的条件:
1、当前页
2、翻页需要查询几条(翻页条数)
3、总共数据库的条数
4、总页数==(总条数/翻页条数)
这些条件可以用一个实体类来定义
然后用另外一个类去实现它:方法
1、当前页可以自定义也可以默认为1(一般为1)
当你访问另一个页面时可以不设置默认为1
2、翻页条数也可以自定义,或者传参,因为 最上面的sql语句的两个占位符是需要当前页、总条数、和翻页数,所以可以写一个方法
每次分页都可以调用这个方法。
3、总条数数据库全查可以得出
4、不用说了吧
然后就是解决最上面sql语句第一个占位符的问题(起始位置),(提示)写一个方法好调用。解决:(当前页-1)乘翻页条数。可以列举几个试试。
大致这几个框架已经打好了,接下来该如何实现呢?
首先这个上一页和下一页不用说了当前页数进行加一和减一,说一下这里进行a标签传值是自动刷新的,当你从mvc传过来值时,直接在a标签进行数据的加一和减一是自动实现的。
首页和尾页也是如此首页的当前页为1,而尾页的当前页就是总页数
这个如何实现呢?
原本是有五个页数,但现在只能看到后三个,因为前两个被屏蔽了,因为只有当这五个页数分别大于零才能显现。即当前页数为1时前面两个都小于1,显示不出来
当页数为3左右各两个就显示出来了,后面两个的限制是后俩的页数小于总页数。
图中…的意思其实就是看不见正常五页左边和右边的,有个限制条件加一加就能实现,具体有点难的就是有关页数的类的实现有点困难我直接代码封上
下面展示。
// An highlighted block
public class pagebean {
//页面大小
private Integer pagesize;
//当前页
private Integer currentpage;
//总条数
private Integer totalcount;
//总页数
private Integer totalpage;
//每页显示的页数
private List list;
public pagebean(Integer pagesize,Integer currentpage,Integer totalcount) {
this.pagesize=pagesize;
this.currentpage=currentpage;
this.totalcount=totalcount;
//当前页为空或者小于零把它看为一
if(this.currentpage==null||this.currentpage<1) {
this.currentpage=1;
}
//默认一般页为五个属性
// if(this.pagesize==null) {
// this.pagesize=5;
// }
//Math.ceil方法是向上取整
/*这里一个坑,起初我以为是我的start方法有问题,实际就是没问题,因为传到currentpage一直是1!!
* 因为Math.ceil的方法我他妈多加了一个括号,如果先整数相处就直接四舍五入了,14/8等于一点多,java直接判断
* 为1,所以totalpage一直是1,无论点击下一页也没用。
* */
this.totalpage=(int) Math.ceil(1.0*this.totalcount/this.pagesize);
// System.out.println( this.totalcount);
// System.out.println(this.pagesize);
// System.out.println(this.totalpage);
//判断当前页是否大于总页数
if(this.currentpage>this.totalpage) {
this.currentpage=this.totalpage;
}
}
//获取起始索引 不知道为什么这么方法用不了奇了怪了、、因为currentpage的值一直是1,所以不能刷新
public Integer getstart() {
return (this.currentpage-1)*this.pagesize;
}
public Integer getPagesize() {
return pagesize;
}
public void setPagesize(Integer pagesize) {
this.pagesize = pagesize;
}
public Integer getCurrentpage() {
return currentpage;
}
public void setCurrentpage(Integer currentpage) {
this.currentpage = currentpage;
}
public Integer getTotalcount() {
return totalcount;
}
public void setTotalcount(Integer totalcount) {
this.totalcount = totalcount;
}
public Integer getTotalpage() {
return totalpage;
}
public void setTotalpage(Integer totalpage) {
this.totalpage = totalpage;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}