当前位置:首页 > 今天的世界杯

后端中使用分页的几种方法(建议收藏)

admin 2025-05-03 11:21:58 7735

文章目录

直接使用mysql的limit进行分页插件Mybatis-PageHelper(拦截器原理)在service中对list进行拆分MP官方插件在一个项目中使用数据库进行查询需要使用的几种依赖

直接使用mysql的limit进行分页

前端会传来数据 page,pageSize 表示第page页显示pageSize条数据 因为我们是直接使用sql语句的,所以我们需要使参数满足limit语法 所以以下进行一定的计算

page=(page-1)*pageSize

然后在我们查询sql的最后加上limit语句即可

select ...... limit #{page},#{pageSize}

插件Mybatis-PageHelper(拦截器原理)

需要依赖

com.github.pagehelper

pagehelper

5.1.2

另外如果是使用的springboot的话,可以引入这个依赖代替上面的。该依赖会自动加入mybatis的依赖

com.github.pagehelper

pagehelper-spring-boot-starter

1.2.10

该插件可以先让我们在dao层查询出列表后,过滤后再进行分页 第一步:设置分页

//注意这里的page不需要进行计算,直接使用前端传过来的数据

PageHelper.startPage(page,pageSize);

第二步:从dao层获取list列表数据并自行过滤

List list=userDao.getUserByAge(int

age);

......

第三步:分页封装

PageInfo pageInfo=new PageInfo<>(list);

之后,pageInfo里面的属性就可以供我们使用了。具体可以使用的数据如下

//当前页

private int pageNum;

//每页的数量

private int pageSize;

//当前页的数量

private int size;

//当前页面第一个元素在数据库中的行号

private int startRow;

//当前页面最后一个元素在数据库中的行号

private int endRow;

//总记录数

private long total;

//总页数

private int pages;

//结果集

private List list;

//前一页

private int prePage;

//下一页

private int nextPage;

//是否为第一页

private boolean isFirstPage = false;

//是否为最后一页

private boolean isLastPage = false;

//是否有前一页

private boolean hasPreviousPage = false;

//是否有下一页

private boolean hasNextPage = false;

//导航页码数

private int navigatePages;

//所有导航页号

private int[] navigatepageNums;

//导航条上的第一页

private int navigateFirstPage;

//导航条上的最后一页

private int navigateLastPage;

在service中对list进行拆分

使用list的api进行分页

int size = list.size();

if (size % pageSize!= 0){

size = size / pageSize+ 1;

if(page == size){

list = list.subList((page - 1) * pageSize,list.size());

}else {

list = list.subList((page - 1) * pageSize,page * pageSize);

}

map.put("pages",size);

map.put("current",page);

}else {

if(size!=0)

list = list.subList((page - 1) * pageSize,page * pageSize);

map.put("current",page);

map.put("pages",size/pageSize);

}

MP官方插件

首先需要导入mybatis-plus的依赖

com.baomidou

mybatis-plus-generator

3.4.1

在config包下添加一个MP的拦截器

@Configuration

public class MybatisPlusConfig {

/*

* 分页插件,自动识别数据库类型 多租户,请参考官网【插件扩展】

*/

@Bean

public PaginationInterceptor paginationInterceptor() {

return new PaginationInterceptor();

}

}

使用MP封装的查询API 第一步:创建一个Page对象(不用进行计算,继续使用前端传过来的数据)

IPage userPage = new Page<>(page, pageSize);//参数一是当前页,参数二是每页个数

第二步:调用官方API

userPage = userMapper.selectPage(userPage, null);

第三步:获取page中的数据

List list = userPage.getRecords();

在一个项目中使用数据库进行查询需要使用的几种依赖

数据库驱动

mysql

mysql-connector-java

8.0.15

数据库连接池

com.alibaba

druid-spring-boot-starter

1.1.10

maybatis和分页插件

com.github.pagehelper

pagehelper-spring-boot-starter

1.2.10