JavaWeb分页查询详解

(一)分页场景分析

蓝色的都是超链接,每个超链接携带的参数不一样,所请求的数据也不一样

需要哪些参数?

请求:页下标pageIndex计算出开始查询的位置Start=(pageIndex-1)*pageSize;

访问数据库:每页显示的条数pageSizesql语句中limit开始的位置Start查询总条数totalCount;

返回页面的参数:数据库查询到的数据集合List<T>,总条数totalCount,计算总页数pageCount,开始页标startPage,结束页标endPage;

 

(二)持久层

//查询数据
SELECT * FROM user limit #{Start},#{pageSize}
//查询总数据数
SELECT count(*) FROM user

(三)控制层

 

(四)封装的分页工具类

把所有需要像页面转发的数据封装进对象

package com.ssm.utils;

import com.ssm.bean.TUser;
import java.util.List;
/**
 * 分页工具
 */
public class PageUtils {
    private int pageIndex;//页标
    private List<TUser> users;//pageIndex页查询到的集合

    //根据totalCount和pageSize计算总页数
    private int pageSize;//每页显示的个数
    private int totalCount;//查询结果总数

    private int pageCount;//总页数
    private int startPage;//页面上显示的第一个页标
    private int endPage;//页面上现实化的最后一个页标

    public PageUtils() { }
    public PageUtils(int pageIndex, int pageSize, List<TUser> users, int totalCount) {
        this.pageIndex = pageIndex;
        this.pageSize = pageSize;
        this.users = users;
        this.totalCount = totalCount;
        if(totalCount%pageSize==0){
            this.pageCount=totalCount/pageSize;
        }else{
            this.pageCount=totalCount/pageSize+1;
        }

        if(pageCount<10){
            this.startPage=1;
            this.endPage=pageCount;
        }else{
            this.startPage=this.pageIndex-4;
            this.endPage=this.pageIndex+5;
            if(this.startPage<1){
                this.startPage=1;
                this.endPage=10;
            }
            if(this.endPage>this.pageCount){
                this.startPage=this.pageCount-9;
                this.endPage=this.pageCount;
            }
        }

    }

    public int getPageIndex() {
        return pageIndex;
    }

    public void setPageIndex(int pageIndex) {
        this.pageIndex = pageIndex;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public List<TUser> getUsers() {
        return users;
    }

    public void setUsers(List<TUser> users) {
        this.users = users;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getStartPage() {
        return startPage;
    }

    public void setStartPage(int startPage) {
        this.startPage = startPage;
    }

    public int getEndPage() {
        return endPage;
    }

    public void setEndPage(int endPage) {
        this.endPage = endPage;
    }
}

 

(五)JSP页面

显示效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值