赞
踩
PageHelper 是一个开源的 MyBatis 分页插件,它提供了简单易用的 API,可以方便地进行分页查询操作。使用 PageHelper 可以减少开发人员编写复杂的分页查询 SQL 语句的工作量,同时还支持多种数据库和多种分页方式。PageHelper 还提供了排序和筛选的功能,并且支持插件扩展,可以根据需求进行自定义。总的来说,PageHelper 是一个强大且方便的工具,可以大大简化在 MyBatis 中进行分页查询的操作。
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.8</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-autoconfigure</artifactId> <version>1.2.10</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency>
#分页插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
在我们查询前,加入PageHelper.startPage(page, pageSize)这样的语句,就会对后面的查询进行分页查询
int page = 1; // 当前页,从1开始
int pageSize = 10; // 每页数量
Page pageInfo = PageHelper.startPage(page, pageSize);
List<ForlanVO> result = forlanMapper.listByCondition(forlanVO);
在项目中,一般在列表查询,如果需要分页,就会使用Mybatis分页插件PageHelper,可以简化在 MyBatis 中进行分页查询的操作。
以下是一些使用 PageHelper 的好处:
简化分页查询:PageHelper 提供了简单易用的 API,可以方便地进行分页查询操作,无需手动编写复杂的 SQL 语句和计算分页参数。
支持多种数据库:PageHelper 支持多种数据库,包括 MySQL、Oracle、PostgreSQL 等,可以在不同的数据库中使用相同的分页方式。
支持物理分页和逻辑分页:PageHelper 支持物理分页和逻辑分页两种方式。物理分页是通过 SQL 语句中的 LIMIT 子句实现的,逻辑分页是通过在查询结果中进行筛选实现的。
支持排序和筛选:PageHelper 提供了排序和筛选的功能,可以根据指定的字段进行排序,并支持根据条件进行筛选。
支持分页插件扩展:PageHelper 提供了丰富的插件扩展机制,可以自定义分页插件的行为,满足不同的需求。
总的来说,使用 PageHelper 可以简化分页查询的操作,提高开发效率,并且具有良好的扩展性和兼容性。
PageHelper是MyBatis的一个插件,内部其实实现了一个PageInterceptor拦截器
在我们使用过程中,使用PageHelper.startPage语句,会在当前线程上下文中设置一个ThreadLocal变量,PageInterceptor分页拦截器就会对其拦截,可以从ThreadLocal中拿到分页的信息,如果有分页信息,就拼接分页SQL(limit语句)进行分页查询,最后再把ThreadLocal中的东西清除掉
本质就是在我们执行SQL语句之前,自动给SQL语句拼接了分页的语句:limit 0,10
这样的话,使用起来就很方便,不用我们自己去拼接
返回的对象Page如下:
public class Page<E> extends ArrayList<E> implements Closeable { private static final long serialVersionUID = 1L; private int pageNum; private int pageSize; private int startRow; private int endRow; private long total; private int pages; private boolean count; private Boolean reasonable; private Boolean pageSizeZero; private String countColumn; private String orderBy; private boolean orderByOnly; 省略方法... }
可以看到信息很全,包含总数量,总页数,当前页,每页数量,排序信息等等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。