【Java】Java SSM分页(PageHelper)

PageHelper 分页插件

  • 导入Maven依赖

    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.10</version>
    </dependency>
    
  • 在sqlSessionFactory中配置pageHelper

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource"/>
      <property name="typeAliasesPackage" value="com.hc.model"></property>
    
      <!-- 配置pageHelper-->
      <property name="plugins">
          <bean class="com.github.pagehelper.PageInterceptor">
              <property name="properties" value="helperDialect=mysql"/>
          </bean>
      </property>
    </bean>
    
  • 编写mapper接口

    List<UserInfo> selectAllUserInfo();
    
  • mybatis 实现接口

        <select id="selectAllUserInfo" resultType="com.hc.model.UserInfo">
            select *
            from tb_userinfo
        </select>
    

    注意: sql语句最后不要带分号,否则在使用pageHelper分页时会报错,因为pageHelper会在sql语句后面自动的加上 limit 语句进行分页查询;

  • service层

    public PageInfo<UserInfo> userInfoPageInfo(int pageNum, int pageSize){
      PageHelper.startPage(pageNum, pageSize);
      List<UserInfo> userInfos = userInfoMapper.selectAllUserInfo();
      PageInfo<UserInfo> page = new PageInfo<>(userInfos);
      return page;
    }
    
  • controller

    /**
         * 查询用户列表并分页
         * @param pageNum  页码
         * @param pageSize  每页大小
         * @param model   存储数据
         * @return    跳转页面
         * @author  nyc
         */
    
    @RequestMapping("/listPage")
    public String listByPage(@RequestParam(defaultValue = "1") int pageNum,
                             @RequestParam(defaultValue = "5") int pageSize,
                             Model model){
      PageInfo<UserInfo> pageInfo = userInfoService.userInfoPageInfo(pageNum, pageSize);
      System.out.println(pageInfo);
      model.addAttribute("page",pageInfo);
      return "userInfo/userList";
    }
    
  • 前端页面

    jsp和jquery方法

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>用户列表</title>
        <link href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
        <style>
            .myFont {
                font-size: 20px;
            }
            
            .myFont p{
              display: inline;
          	}
    
            .center-box {
                margin: 0px auto;
            }
        </style>
    </head>
    <body>
    <div>
        <table class="table table-striped">
            <thead>
            <th>序号</th>
            <th>用户名</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
            <th>电话</th>
            <th>电子邮箱</th>
            <th>操作</th>
            </thead>
            <tbody>
            <form id="pageForm" action="/SSM_LOGIN_REGISTER/ssm/userInfo/listPage" method="post">
                <input type="hidden" name="pageNum" value="${page.pageNum}" id="pageNum">
                <input type="hidden" name="pageSize" value="${page.pageSize}" id="pageSize">
            </form>
            <c:forEach var="userInfo" items="${page.list}" varStatus="index">
                <tr>
                    <td>${index.index + 1}</td>
                    <input type="hidden" name="realId" value="${userInfo.userId}">
                    <td>${userInfo.userName}</td>
                    <td>${userInfo.name}</td>
                    <td>${userInfo.age}</td>
                    <td>${userInfo.sex}</td>
                    <td>${userInfo.phone}</td>
                    <td>${userInfo.email}</td>
                    <td>
                        <a href="#" class="btn btn-primary btn-sm">修改</a>
                        <a href="#" class="btn btn-danger btn-sm">删除</a>
                    </td>
                </tr>
            </c:forEach>
            </tbody>
        </table>
    </div>
    <div>
        <nav aria-label="Page navigation center-box" class="center-block">
            <ul class="pagination">
                <li id="prevGroup">
                    <a href="#" aria-label="First" id="firstBtn">
                        <span aria-hidden="true">首页</span>
                    </a>
                    <a href="#" aria-label="Previous" id="previousBtn">
                        <span aria-hidden="true">上一页</span>
                    </a>
                </li>
                <c:forEach var="num" items="${page.navigatepageNums}">
                    <li name="pageNum" <c:if test="${num == page.pageNum}"> class="active" </c:if>  >
                        <a href="#" onclick="toNumPage(${num})">${num}</a>
                    </li>
                </c:forEach>
                <li id="nextGroup">
                    <a href="#" aria-label="Next" id="nextBtn">
                        <span aria-hidden="true">下一页</span>
                    </a>
                    <a href="#" aria-label="Last" id="lastBtn">
                        <span aria-hidden="true">末页</span>
                    </a>
                </li>
                <li class="myFont" style="text-align: center;align-content: center">
                    <p>&nbsp;共${page.total}条记录</p>
                    <p>&nbsp;共${page.pages}页</p>
                    <p>&nbsp;第${page.pageNum}页</p>
                    <p>&nbsp;每页显示行数</p>
                </li>
                <li>
                    <select name="pageSize" class="input-sm" id="selectPageSize" onchange="pageSizeChange()">
                        <option value="5" <c:if test="${page.pageSize == 5}">selected</c:if>>5</option>
                        <option value="10" <c:if test="${page.pageSize == 10}">selected</c:if>>10</option>
                        <option value="15" <c:if test="${page.pageSize == 15}">selected</c:if>>15</option>
                        <option value="20" <c:if test="${page.pageSize == 20}">selected</c:if>>20</option>
                    </select>
                </li>
            </ul>
        </nav>
    </div>
    </body>
    <script src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
    <script src="${pageContext.request.contextPath}/js/jquery.min.3.11.js"></script>
    <script src="${pageContext.request.contextPath}/js/echarts.min.js"></script>
    <script>
        //初始化变量
        let pageNum = ${page.pageNum};  //当前页
        let pages = ${page.pages};      //总页数
        let hasPreviousPage = ${page.hasPreviousPage};  //是否有上一页
        let hasNextPage = ${page.hasNextPage};  //是否有下一页
    
        let pageForm = $("#pageForm");   //表单
    
        //按钮状态
        //如果没有上一页/下一页,将按钮禁用
        if (!hasPreviousPage) {
            $("#prevGroup").addClass("disabled");
        }
        if (!hasNextPage) {
            $("#nextGroup").addClass("disabled");
        }
    
        // 点击事件
    
        //点击首页
        $("#firstBtn").click(function () {
            if (!$("#prevGroup").hasClass("disabled")) {
                $("#pageNum").val(1);
                $("#pageSize").val($("#selectPageSize").val());
                pageForm.submit();      //表单提交
            }
        })
    
        //点击上一页
        $("#previousBtn").click(function () {
            if (!$("#prevGroup").hasClass("disabled")) {
                $("#pageNum").val(pageNum - 1);
                $("#pageSize").val($("#selectPageSize").val());
                pageForm.submit();
            }
        })
    
        //点击下一页
        $("#nextBtn").click(function () {
            if (!$("#nextGroup").hasClass("disabled")) {
                $("#pageNum").val(pageNum + 1);
                $("#pageSize").val($("#selectPageSize").val());
                pageForm.submit();
            }
        })
    
        //点击末页
        $("#lastBtn").click(function () {
            if (!$("#nextGroup").hasClass("disabled")) {
                $("#pageNum").val(pages);
                $("#pageSize").val($("#selectPageSize").val());
                pageForm.submit();
            }
        })
    
        //点击页码
        function toNumPage(num) {
            $("#pageNum").val(num);
            $("#pageSize").val($("#selectPageSize").val());
            pageForm.submit();
        }
    
        //选择页码大小
        function pageSizeChange() {
            let changeNum = $("#selectPageSize").val();
            console.log(changeNum);
            $("#pageNum").val(1);
            $("#pageSize").val(changeNum);
            console.log($("#pageSize").val());
            pageForm.submit();
        }
    </script>
    </html>
    

    样例:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值