(一)分页场景分析
蓝色的都是超链接,每个超链接携带的参数不一样,所请求的数据也不一样
需要哪些参数?
请求:页下标pageIndex,计算出开始查询的位置Start=(pageIndex-1)*pageSize;
访问数据库:每页显示的条数pageSize,sql语句中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页面
显示效果