[PageHelper]-->SSM分页操作的实现

SSM分页操作的实现

注:这里使用pagehelper实现分页操作,在SSM和SpringBoot等都适用,本文主要介绍相关参数以及展示相应实现

一、依赖导入与插件配置

①、分页插件依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>

②、配置分页插件(配置在mybatis中)

<plugins>
    <!--配置分页插件-->
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

这里可以注意到分页插件本质上是一个拦截器。

二、具体实现操作

①、持久层

这个插件是建立在全部的数据基础之上,所以我们只需要将全部数据查询出即可。

    <select id="getEmps" resultType="employee">
        select * from t_employee
    </select>

②、Service层

 public PageInfo<Employee> getEmpsByPage(Integer pageNum) {
        //开启分页
        Page<Object> page = PageHelper.startPage(pageNum, 5);
        List<Employee> emps = getEmps();
        //获取分页相关信息
        PageInfo<Employee> pageInfo = new PageInfo<>(emps, 5);
        return pageInfo;
    }

导入相关依赖后,只需要两步就可以开启分页操作。

startPage(pageNum, PageSize)

该方法中第一个传入参数为页码数,第二个参数为每页页大小,也就是每页展示多少个数据。该方法返回值page中包含当前页的数据信息,如下图:
请添加图片描述

PageInfo

PageInfo构造器第一个传参传入的是查询的全部结果,第二个参数为想要展示的页面索引数量。
这个的返回参数含有的信息更加的全面,我就是对这个的信息进行相关的处理。将其作为返回值返还给控制层,方便后续处理。
请添加图片描述
对具体的参数进行相应的说明,我们也就是针对这个参数来进行相应的处理。

参数说明
pageNum当前所在页的编号
pages总页数
prePage前一页的编号
nextPage下一页的编号
isFirstPage是否是第一页
isLastPage是否是最后一页
hasPreviousPage是否有前一页,比如第一页他就没有前页
hasNextPage是否有下一页,尾页就没有下一页
navigatepageNums生成的一系列页码编号
total总共的数据数量
list当前页查询出来的数据

③、控制层

核心思想也就是将pageInfo相关信息存储起来,在前端页面进行相应的获取判断

@RequestMapping("/employee/page/{pagenum}")
public String getEmpsByPage(@PathVariable("pagenum") Integer pagenum, Model model, HttpSession session){
    PageInfo<Employee> page = employeeService.getEmpsByPage(pagenum);
    model.addAttribute("page", page);
    //存页数 方便返回定位
    session.getServletContext().setAttribute("pageNow", pagenum);
    return "employeeList";
}

④、前端页面判断

/employee/page/pagenum即为请求查询第几页的数据。

<div style="text-align: center">
    <a th:if="${!page.isFirstPage}" th:href="@{/employee/page/1}" >首页</a>
    <a th:if="${page.hasPreviousPage}" th:href="@{'/employee/page/'+${page.prePage}}" >上一页</a>
    <span th:each = "num : ${page.navigatepageNums}">
        <a th:href="@{'/employee/page/'+${num}}" th:text="${num}" style="width:50px"></a>
    </span>
    <a th:if="${page.hasNextPage}" th:href="@{'/employee/page/'+${page.nextPage}}" >下一页</a>
    <a th:if="${!page.isLastPage}" th:href="@{'/employee/page/'+${page.pages}}" >尾页</a>
</div>

⑤、最终页面展示效果

效果如下,除了分页之外,还实现了基本的增删改查与批量删除操作,以及用户登录拦截等。
在这里插入图片描述

上述这个简易的demo已经开源,具体实现可以点击查看

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值