java项目工具|后端中使用分页的几种方法(建议收藏)


文章目录

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

直接使用mysql的limit进行分页 前端会传来数据 pagepageSize
表示第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进行拆分 使用listapi进行分页
int size = list.size(); if (size % pageSize!= 0){ size = size / 10 + 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 { list = list.subList((page - 1) * pageSize,page * pageSize); map.put("current",page); map.put("pages",size); }

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

【java项目工具|后端中使用分页的几种方法(建议收藏)】maybatis和分页插件
com.github.pagehelper pagehelper-spring-boot-starter 1.2.10

    推荐阅读