PageHelper

本文详细介绍了PageHelper分页插件的使用方法,包括其成员属性、在SpringBoot项目中的引入步骤、web层和service层的具体实现,以及与前端jqgrid分页的区别。

PageHelper——分页工具
成员属性

//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//排序
private String orderBy;
 
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
 
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
 
//第一页
private int firstPage;
//前一页
private int prePage;
//下一页
private int nextPage;
//最后一页
private int lastPage;
 
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;

引入进SpringBoot项目
一、依赖

<!--Pagehelper分页-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>

二、web层

@GetMapping("")
public ModelAndView blogs(@RequestParam(name = "page",defaultValue = "1")Integer page,
                          @RequestParam(name = "size",defaultValue = "2")Integer size,
                          HttpSession session){
    ModelAndView mv = new ModelAndView();
        if (session.getAttribute("user")!=null){
            List<Blog> blogs = blogService.findAll(page,size);//分页查询
            PageInfo pageInfo = new PageInfo(blogs);
            List<Type> types = typeService.findAllType();
            mv.addObject("pageInfo",pageInfo);
            mv.addObject("types",types);
            mv.setViewName("admin/blogs");
            return mv;
        }
        else{
            mv.setViewName("admin");
            return mv;
        }
}

三、service层

//分页查询
@Override
public List<Blog> findAll(int page,int size) {
    PageHelper.startPage(page,size);
    return blogDao.findAll();
}

dao层正常写
pagehelper是卡住数据库这一关的插件,和前端的jqgrid分页的原理不同。

### PageHelper 分页插件使用教程 #### 导入依赖 为了在项目中使用PageHelper分页插件,首先需要导入相应的依赖。对于Maven项目来说,可以在`pom.xml`文件中加入如下配置来引入PageHelper: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.8</version> </dependency> ``` 此操作会自动下载并集成所需的库到工程环境中[^4]。 #### 插件初始化设置 接着,在Spring Boot应用程序或其他基于Spring框架的应用程序里,可以通过Java配置类或者XML形式注册该插件。通常推荐采用更简洁的Java Config方式来进行全局配置: ```java @Configuration public class MyBatisConfig { @Bean public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties p = new Properties(); p.setProperty("offsetAsPageNum", "true"); p.setProperty("rowBoundsWithCount", "true"); p.setProperty("reasonable", "true"); pageHelper.setProperties(p); return pageHelper; } } ``` 上述代码片段展示了如何创建一个自定义配置实例,并设置了几个常用的属性选项以优化性能表现和用户体验[^2]。 #### 实现基本分页逻辑 当完成了前期准备工作之后,便可以着手编写具体的业务处理函数了。下面给出了一段典型的DAO层接口实现示例,用于执行带有限制条件的数据检索请求: ```java // 假设有一个名为UserMapper.java 的 Mapper 接口 @Select("SELECT * FROM users WHERE status=#{status}") List<User> selectUsersByStatus(@Param("status") Integer status); // 对应的服务端控制器方法内调用 mapper 方法前加上分页语句即可轻松达成目的 int pageNum = 1; // 当前页面编号,默认第一页 int pageSize = 10; // 每页显示记录数 PageHelper.startPage(pageNum, pageSize); List<User> userList = userMapper.selectUsersByStatus(1); // 正常查询列表数据 System.out.println(new PageInfo<>(userList).getTotal()); // 输出总条目数量 ``` 这里的关键在于调用了静态工具类 `PageHelper.startPage()` 来指定当前要展示哪一部分的内容范围;随后正常发起SQL指令读取目标表中的信息集合;最后借助于辅助对象 `PageInfo<T>` 可方便地获取有关本次查询的一些统计指标,比如总数、是否有下一页等附加元数据[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值