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语句//获得创建人idMap<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项目中整合PageHelper并实现分页查询功能的全部步骤。通过以上配置和代码,我们可以轻松地实现数据库分页查询,提高了开发效率并改善了用户体验。
希望本文能够对你有所帮助,祝你在Spring Boot项目中顺利实现分页功能!