页码:pageNum(用户会发送请求,携带页码pageNum给服务器)
每页显示的记录条数:pageSize,例如百度默认就是每页展示10条记录。
实际上每一次再进行分页请求发送的时候,都是要发送两个数据的。
limit语法格式:
limit 开始下标,显示的记录条数
limit startIndex,pageSizeselect * from t_car limit 0,2;
select * from t_car limit 2;
这两条语句是等效的
mysql当中起始行的下标是从0开始。第一条记录的下标是0
举例:
总表
select * from t_car limit 0,3;
select * from t_car limit 3,2;
假设每页显示4条记录:
第一页:limit 0,4
第二页:limit 4,4
第三页:limit 8,4
……
第i页:limit 4(i-1),4
每页显示的记录条数 pageSize = 3;
页码:pageNum = 10;
startIndex = (pageNum-1)*pageSize
limit startIndex ,pageSize
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelperartifactId>
<version>5.3.1version>
dependency>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">plugin>
plugins>
接口:
/**
* 查询所有的cat,通过分页查询插件PageHelper完成
* @return
*/
List<Car> selectAll();
mapper.xml文件:
<select id="selectAll" resultType="car">
select * from t_car
select>
测试程序:
一定一定要注意:在执行DQL语句之前,开启分页功能
PageHelper.startPage(pageNum,pageSize);
@Test
public void testPageHelper() throws IOException {
SqlSession sqlsession = SqlSessionUtil.openSession();
CarMapper carMapper = sqlsession.getMapper(CarMapper.class);
//一定一定要注意:在执行DQL语句之前,开启分页功能
int pageNum = 2;
int pageSize = 3;
PageHelper.startPage(pageNum,pageSize);
List<Car> cars = carMapper.selectAll();
cars.forEach(car -> {
System.out.println(car);
});
sqlsession.close();
}
运行结果:
分页查询执行成功!
封装分页信息对象 new PageInfo()
PageInfo对象是PageHelper插件提供的,用来封装分页相关的信息的对象
@Test
public void testPageHelper() throws IOException {
SqlSession sqlsession = SqlSessionUtil.openSession();
CarMapper carMapper = sqlsession.getMapper(CarMapper.class);
//一定一定要注意:在执行DQL语句之前,开启分页功能
int pageNum = 2;
int pageSize = 3;
PageHelper.startPage(pageNum,pageSize);
List<Car> cars = carMapper.selectAll();
// cars.forEach(car -> {
// System.out.println(car);
// });
//封装分页信息对象 new PageInfo()
//PageInfo对象是PageHelper插件提供的,用来封装分页相关的信息的对象
PageInfo<Car> carPageInfo = new PageInfo<>(cars, 3);
System.out.println(carPageInfo);
sqlsession.close();
}
执行结果:
PageInfo{
pageNum=2, 页码
pageSize=3, 每页显示几条记录
size=3,
startRow=4, 整个mysql数据库当中从第几条记录开始
endRow=6, 最后那条记录
total=11, 总记录条数
pages=4, 页数
list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=11, pages=4, reasonable=false, pageSizeZero=false}
prePage=1, 上一页的页码
nextPage=3, 下一页的页码
isFirstPage=false, 是否是第一页
isLastPage=false, 是否是最后一页
hasPreviousPage=true, 有没有上一页
hasNextPage=true, 有没有下一页
navigatePages=3, 导航栏的页数
navigateFirstPage=1, 导航栏第一页的页数是1
navigateLastPage=3, 导航栏最后一页的页数是3
navigatepageNums=[1, 2, 3]} 导航的页数