1.前言
在开发web应用程序时,经常会遇到需要对数据库中的数据进行分页查询的情况。为了简化分页查询的实现过程,我们可以利用PageHelper这个优秀的分页插件来实现分页功能。本文将介绍如何在Spring Boot项目中整合PageHelper,并演示如何使用它来实现分页功能。
2.添加依赖
首先,在你的Spring Boot项目中的pom.xml
文件中添加PageHelper的依赖
<!-- PageHelper分页查询的依赖--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.6</version> </dependency>
3.声明一个统一返回类
@Data @NoArgsConstructor @AllArgsConstructor public class PageBean<T> { private int total;//总记录数 private List<T> items;//数据列表 }
4.使用PageHelper实现分页查询
接下来,我将演示如何在Service层中使用PageHelper来实现分页查询。假设我们有一个UserService
来处理用户信息的查询,我们可以按照以下步骤来实现分页功能:
@Override public PageBean<Article> getPageArticle(Integer pageNum, Integer pageSize, String categoryId, String state) { //1.创建PageBean用于封装查询好的数据 PageBean<Article> pageBean = new PageBean<>(); //2.开启分页查询 //开启后PageHelper在底层,会拦截查询前的SQL语句,在其后面加上类似LIMIT等数据库特定的分页语句 PageHelper.startPage(pageNum, pageSize); //3.调用数据层查询含条件的,pageHelper自动拼接sql语句 //获得创建人id Map<String,Object> map = ThreadLocalUtil.get(); Integer userId = (Integer) map.get("id"); List<Article> articles = articleDao.getPageArticle(userId,categoryId,state); //Page中提供方法,可以获取PageHelper分页查询后 得到总记录条数和当前数据 Page<Article> p = (Page<Article>) articles;//如果不强转的话多态是不允许父类类型调用子类特有的方法的 //把数据填充到pageBean中 pageBean.setTotal(p.getPages()); pageBean.setItems(p.getResult()); return pageBean; }
这里把返回结果List前传成Page就是因为多态的弊端,无法调用子类特有的方法,Page是List的实现类所以说要调用Page的getPages()和getResult()来获取条数和数据集合,就需要强转。
还有一点要注意的就是,当我开启分页查询 PageHelper.startPage(pageNum, pageSize);Pagehelper会用Aop的思想帮我们自动在此方法执行的sql中拼接一个limit子句。
5.总结
标签:分页,Spring,Boot,查询,PageBean,PageHelper,Page From: https://blog.csdn.net/m0_74749208/article/details/139277112至此,我们已经完成了在Spring Boot项目中整合PageHelper并实现分页查询功能的全部步骤。通过以上配置和代码,我们可以轻松地实现数据库分页查询,提高了开发效率并改善了用户体验。
希望本文能够对你有所帮助,祝你在Spring Boot项目中顺利实现分页功能!