手写分页查询的工具类,模仿百度分页
public class PageBean<T> {
private int size = 5; //每页显示记录
private int index = 1;//当前页号
private int totalPageCount = 1;//总页数
private int totalCount = 0;//记录总数
private int[] numbers;//显示页数 集合
private List<T> list;//要显示到页面的数据集合
//得到开始记录
public int getStartRow()
{
return (index -1) * size;
}
//得到结束记录
public int getEndRow()
{
return index * size;
}
public int getSize()
{
return size;
}
public void setSize()
{
if (size > 0)
{
this.size = size;
}
}
public int getIndex()
{
if (totalPageCount == 0)
{
return 0;
}
return index;
}
public void setIndex(int index)
{
if (index > 0 && index <= totalPageCount)
{
this.index = index;
}else if (index > totalPageCount){
this.index = totalPageCount;
}
}
public int getTotalCount()
{
return totalCount;
}
public void setTotalCount(int totalCount)
{
if (totalCount >= 0)
{
this.totalCount = totalCount;
setTotalPageContByRs();//根据总记录计算页数
}
}
public int getTotalPageCount()
{
return this.totalPageCount;
}
private void setTotalPageContByRs()
{
if (this.size > 0 && this.totalCount > 0 && this.totalCount % this.size == 0){
this.totalPageCount = this.totalCount / this.size;
}else if (this.size > 0 && this.totalCount > 0 && this.totalCount % this.size > 0){
this.totalPageCount = (this.totalCount / this.size) + 1;
}else {
this.totalPageCount = 0;
}
setNumners(totalPageCount);//获取显示页数集合
}
public int[] getNumbers()
{
return numbers;
}
public void setNumners(int totalPageCount)
{
if (totalPageCount >0){
int[] numbers = new int[totalPageCount>10?10:totalPageCount];//页面显示的页数集合
int k = 0;
for (int i = 0; i < totalPageCount; i++) {
if ((i>=index- (numbers.length/2+1) || i >= totalPageCount-numbers.length) && k < numbers.length){
numbers[k] = i +1;
k++;
}else if (k >= numbers.length){
break;
}
}
this.numbers = numbers;
}
}
public void setNumbers(int[] numbers){
this.numbers = numbers;
}
public List<T> getList()
{
return list;
}
public void setList(List<T> list)
{
this.list = list;
}
}
业务层代码
public PageBean<Bao> QueryBaoLimit(int id, int index) {
PageBean<Bao> pageBean = new PageBean<>();
int max = dao.QueryMax(id);//先获取最大记录数
pageBean.setTotalCount(max);//并先赋值 最大数
pageBean.setIndex(index); //并赋值当前页数,就是首页第一页
//pageBean.getStartRow()这个是计算出开始,起始点。.getSize()--,每页显示几条数据实体类默认5
List<Bao> list = dao.QueryPage(id, pageBean.getStartRow(), pageBean.getSize());
pageBean.setList(list);
return pageBean;
注意:PageBean 需要定义用到的实体类
dao层一共需要定义两个方法(总记录数与limit分页查询)
service层一个方法:先调用dao层总记录数方法,拿到之后再调用dao层limit方法
思路:1.先使用sql 根据id获取 总记录数
2.定义sql 分页查询(id,index(起始点),getSize()(每页几条))
3.使用工具类,先把最大数与index当前页赋值,然后调用dao成分页查询方法,并将起始点与每页显示几条传给它