Spring Boot中的Mybatis分页插件-pagehelper的使用

简介: Spring Boot中的Mybatis分页插件-pagehelper的使用

很多时候我们写DAO层接口会写一个查询所有记录的方法,但是在数据量非常大的时候,查询所有记录会巨慢无比,这时我们就需要用到分页查询。pagehelper就是个很好的分页插件。

1,配置

pagehelper的项目地址:地址

我们只需在Maven中加入如下依赖即可:

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.1</version></dependency>

2,执行分页查询

首先这里先写好DAO和Mapper XML的查询全部部分:

Mapper XML的select节点:

<selectid="getAll"resultMap="userResultMap">    select * from `user`
</select>

DAO:

/*** 获取全部用户*/List<User>getAll();

User类表示一个用户的POJO类。

然后在Service中写一个查询指定页的用户的方法:

@AutowiredprivateUserDAOuserDAO;
/*** 查询用户** @param pageNum  当前页码* @param pageSize 一页的记录数*/publicPage<User>getUserList(intcurrentPage, intpageSize) {
Page<User>userPage=PageHelper.startPage(currentPage, pageSize).doSelectPage(() ->userDAO.getAll());
returnuserPage;
}

使用PageHelper类即可很轻松的进行分页查询了!可见PageHelperstartPage方法用于指定要获取的当前页码和一页的记录数,startPage这个方法就设定了分页查询的基本参数,返回了个PageMethod对象,然后在此基础上,执行PageMethod对象的doSelectPage方法,这个方法中通过lambda语句执行我们Mybatis的查询全部方法,这样内部就自动完成了分页逻辑,并返回了指定页码的数据记录。

最后查询的结果是个Page对象,这个对象有如下方法:

  • getPageNum 获取当前的页码
  • getPages 获取总页数
  • getTotal 获取总记录数
  • getResult 获取当前页的数据记录,为一个List集合

所以在Controller中我们就可以通过调用Service取得结果的Page对象后,再调用getResult方法获取这一页的数据:

//查询第一页数据,每一页15条记录userService.getUserList(1, 15).getResult();

上述startPage方法第一个参数写0和1是一样的,都表示获取第一页。

3,优化分页模型

实际业务中通常会自己封装一个类表示我们分页查询后的结果:

importcom.github.pagehelper.Page;
importlombok.Getter;
importlombok.NoArgsConstructor;
importlombok.Setter;
importjava.io.Serializable;
importjava.util.List;
/*** 分页查询结果模型,存放整个结果分页基本信息和当前页信息以及内容*/@Setter@Getter@NoArgsConstructorpublicclassPaging<T>implementsSerializable {
/*** 当前页*/privateintcurrentPageNum;
/*** 总页数*/privateinttotalPageNum;
/*** 每页记录数量*/privateintpageSize;
/*** 总记录数*/privatelongtotalCount;
/*** 当前页记录集合*/List<T>dataCurrentPage;
/*** 传入Page结果对象构造Pageing对象** @param pageResult 分页查询结果Page对象*/publicPaging(Page<T>pageResult) {
this.currentPageNum=pageResult.getPageNum();
this.totalPageNum=pageResult.getPages();
this.totalCount=pageResult.getTotal();
this.pageSize=pageResult.getPageSize();
this.dataCurrentPage=pageResult.getResult();
    }
}

这里封装了一个Paging类,表示我们查询的分页结果类。然后改造上述Service的方法如下:

@AutowiredprivateUserDAOuserDAO;
/*** 查询用户** @param pageNum  当前页码* @param pageSize 一页的记录数*/publicPaging<User>getUserList(intcurrentPage, intpageSize) {
Page<User>userPage=PageHelper.startPage(currentPage, pageSize).doSelectPage(() ->userDAO.getAll());
Paging<User>userPaging=newPaging<User>(userPage);
returnuserPaging;
}

让Service处理我们得到的分页结果Page对象中所需要的属性,并放入我们自己的分页模型Paging并返回,这样更加方便。

相关文章
|
2月前
|
SQL XML Java
8、Mybatis-Plus 分页插件、自定义分页
这篇文章介绍了Mybatis-Plus的分页功能,包括如何配置分页插件、使用Mybatis-Plus提供的Page对象进行分页查询,以及如何在XML中自定义分页SQL。文章通过具体的代码示例和测试结果,展示了分页插件的使用和自定义分页的方法。
8、Mybatis-Plus 分页插件、自定义分页
|
19天前
|
SQL Java 数据库连接
解决mybatis-plus 拦截器不生效--分页插件不生效
本文介绍了在使用 Mybatis-Plus 进行分页查询时遇到的问题及解决方法。依赖包包括 `mybatis-plus-boot-starter`、`mybatis-plus-extension` 等,并给出了正确的分页配置和代码示例。当分页功能失效时,需将 Mybatis-Plus 版本改为 3.5.5 并正确配置拦截器。
134 6
解决mybatis-plus 拦截器不生效--分页插件不生效
|
1天前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
8 2
|
9天前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
2月前
|
JavaScript 前端开发 Java
SpringBoot 引入 smart-doc 接口文档管理插件,以及统一接口返回,最后推送到 Torna,进行统一管理
本文介绍了如何在SpringBoot项目中整合smart-doc接口文档管理插件,实现接口文档的生成和统一管理,并展示了如何将文档推送到Torna接口文档管理系统进行进一步的集中管理。
125 0
SpringBoot 引入 smart-doc 接口文档管理插件,以及统一接口返回,最后推送到 Torna,进行统一管理
|
2月前
|
Java 数据库 Spring
MyBatisPlus分页插件在SpringBoot中的使用
这篇文章介绍了如何在Spring Boot项目中配置和使用MyBatis-Plus的分页插件,包括创建配置类以注册分页拦截器,编写测试类来演示如何进行分页查询,并展示了测试结果和数据库表结构。
MyBatisPlus分页插件在SpringBoot中的使用
|
3月前
|
SQL 监控 Java
IDEA插件-Mybatis Log Free日志替换
MyBatis Log Free 是一个免费的用于在 IntelliJ IDEA 中显示 MyBatis 日志的插件。它可以帮助您更方便地查看和分析 MyBatis 的 SQL 执行情况,以及定位潜在的性能问题,提高开发效率。
240 0
IDEA插件-Mybatis Log Free日志替换
|
3月前
|
Java Spring 开发框架
Spring Boot中的分页与排序实现
Spring Boot中的分页与排序实现
|
3月前
|
Java 测试技术 开发工具
Spring Boot中的开发工具与插件推荐
Spring Boot中的开发工具与插件推荐
|
4月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
下一篇
无影云桌面