ssm框架+PageHelper插件实现分页查询功能

以实现用户管理模块的分页查询功能为例,在使用ssm框架搭建基础框架后,我们可以按照以下步骤实现分页查询功能。

步骤一:添加PageHelper依赖

在项目的pom.xml文件中添加以下依赖:

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

步骤二:配置PageHelper插件

在项目的Spring配置文件中,添加以下配置:

<!--配置PageHelper插件-->
<bean id="pageHelper" class="com.github.pagehelper.PageHelper" init-method="afterPropertiesSet">
    <property name="properties">
        <value>
            reasonable=true
            supportMethodsArguments=true
            returnPageInfo=true
            params=count=countSql
        </value>
    </property>
</bean>

步骤三:在Controller中接收分页参数,并使用PageHelper.startPage()方法实现分页查询功能

@RequestMapping(value = "userList", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getUserList(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) {
    PageHelper.startPage(pageNum, pageSize);
    List<User> userList = userService.getUserList();
    PageInfo<User> pageInfo = new PageInfo<>(userList);
    Map<String, Object> result = new HashMap<>();
    result.put("pageInfo", pageInfo);
    return result;
}

以上代码实现了根据传递的pageNum和pageSize参数进行分页查询,并将查询结果封装到PageInfo中返回给前端。

示例1:使用ajax分页展示用户列表

前端代码:

var pageSize = 10;//每页显示10条记录
var pageNum = 1;//默认查询第一页
function getUserList() {
    $.ajax({
        url: "/userList",
        type: "GET",
        data: {pageNum: pageNum, pageSize: pageSize},
        dataType: "json",
        success: function (data) {
            var userList = data.pageInfo.list;
            var totalPage = data.pageInfo.pages;
            //渲染用户列表
        }
    });
}

以上代码通过ajax异步获取后台返回的分页结果,并根据分页信息渲染用户列表。

示例2:使用Thymeleaf模板引擎展示分页查询结果

前端代码:

<table>
    <tr>
        <th>用户ID</th>
        <th>用户名</th>
        <th>性别</th>
        <th>年龄</th>
        <th>操作</th>
    </tr>
    <tr th:each="user : ${pageInfo.list}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.username}"></td>
        <td th:text="${user.sex}"></td>
        <td th:text="${user.age}"></td>
        <td><a href="#">编辑</a><a href="#">删除</a></td>
    </tr>
</table>
<div th:fragment="pagination">
    <ul>
        <li th:class="${pageInfo.isFirstPage() ? 'disabled' : ''}">
            <a th:if="${!pageInfo.isFirstPage()}"
               th:href="@{/userList(pageNum=1,pageSize=${pageInfo.pageSize})}"
               th:text="'<<'"><<</a>
        </li>
        <li th:class="${pageInfo.isFirstPage() ? 'disabled' : ''}">
            <a th:if="${!pageInfo.isFirstPage()}"
               th:href="@{/userList(pageNum=${pageInfo.pageNum}-1,pageSize=${pageInfo.pageSize})}"
               th:text="'< '">&lt;</a>
        </li>
        <li th:class="${pageInfo.isLastPage() ? 'disabled' : ''}">
            <a th:if="${!pageInfo.isLastPage()}"
               th:href="@{/userList(pageNum=${pageInfo.pageNum}+1,pageSize=${pageInfo.pageSize})}"
               th:text="' >'">&gt;</a>
        </li>
        <li th:class="${pageInfo.isLastPage() ? 'disabled' : ''}">
            <a th:if="${!pageInfo.isLastPage()}"
               th:href="@{/userList(pageNum=${pageInfo.pages},pageSize=${pageInfo.pageSize})}"
               th:text="'>>'">>></a>
        </li>
    </ul>
    <span th:text="'共 '+${pageInfo.pages}+' 页,当前第 '+${pageInfo.pageNum}+' 页,共计 '+${pageInfo.total}+' 条记录'"></span>
</div>

以上代码通过Thymeleaf模板引擎遍历展示分页结果,并在底部生成分页导航条。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ssm框架+PageHelper插件实现分页查询功能 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • SpringSecurity如何实现配置单个HttpSecurity

    要实现配置单个HttpSecurity,可以通过在配置类中创建多个protected的方法,并使用@Order注解来指定它们的顺序来实现。每个protected方法都会配置一个单独的HttpSecurity对象。 下面是实现的步骤: 创建一个配置类,并添加@EnableWebSecurity注解。 在配置类中创建多个被@Order注解标记的protected…

    Java 2023年5月20日
    00
  • 一文带你你搞懂Java的3种IO模型

    一文带你搞懂Java的3种IO模型 在Java中,输入输出操作是很常见的。Java的IO模型可以分为三种:Blocking IO、Non-blocking IO和异步IO。它们的区别在于处理IO事件的方式不同。 Blocking IO 在Blocking IO模型中,当向Socket写入数据时,线程会阻塞,直到数据被真正写入。而当Socket读取数据时,线程…

    Java 2023年5月31日
    00
  • Java char[]数组转成String类型详细介绍

    下面是“Java char[]数组转成String类型详细介绍”的完整攻略。 1. String构造函数 在Java中,String类提供了一个构造函数,可以将字符数组转换为字符串。这个构造函数的语法为: String(char[] value) 其中,value是要转换的字符数组。下面是一个示例: char[] myCharArray = {‘H’, ‘e…

    Java 2023年5月26日
    00
  • Java中Thread.join()的使用方法

    下面我来详细讲解Java中Thread.join()的使用方法。 Thread.join()方法 Thread.join()方法是一个用于等待线程结束的方法。在执行线程时,可以调用join()方法,让当前线程等待被调用join()方法的线程执行完成后才继续往下执行。 语法 public final void join() throws Interrupted…

    Java 2023年5月19日
    00
  • Form表单上传文件(type=”file”)的使用

    下面是关于“Form表单上传文件(type=”file”)的使用”的完整攻略。 什么是表单上传文件 表单上传文件是指通过HTML表单允许用户上传文件。它使用表单元素的type属性设置为“file”,可以让用户选择一个或多个文件。 表单上传文件的实现步骤 要使用表单上传文件,需要以下步骤: 在HTML页面中创建一个表单元素,并将其类型设置为“post”,同时指…

    Java 2023年6月15日
    00
  • java实现后台返回base64图形编码

    下面是Java实现后台返回base64图形编码的攻略: 一、什么是Base64编码 Base64是一种编码方式,将数据进行Base64编码后可以得到一串字符串。由于Base64编码后的字符串只包含字母、数字和‘+’、‘/’两个符号,不包含其他特殊字符,因此可以方便地在各种网络环境中传输。 在Java中,可以使用java.util.Base64类进行Base6…

    Java 2023年5月20日
    00
  • AngularJS基于provider实现全局变量的读取和赋值方法

    要实现全局变量的读取和赋值,可以使用AngularJS中的provider。 provider是AngularJS中的一个服务提供者,它可以在config阶段(即AngularJS框架初始化之前)注入到AngularJS应用中。用它可以将服务定义成可配置的,在应用配置阶段根据需要进行一些配置。 使用provider实现全局变量的读取和赋值,需要先定义一个pr…

    Java 2023年6月15日
    00
  • JAVA/JSP学习系列之六(MySQL翻页例子)

    JAVA/JSP学习系列之六(MySQL翻页例子) 本文将介绍如何使用JAVA和JSP实现MySQL翻页效果,以充分利用数据库的性能,同时提高用户体验。 1. 分页原理 分页语句的基本语法如下: SELECT * FROM table LIMIT start, size 其中,start表示起始位置,size表示获取的数据数量。我们可以通过计算来动态生成LI…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部