【SSM进阶学习系列丨分页篇】PageHelper 分页插件导入集成实践

2024-05-04 15:04

本文主要是介绍【SSM进阶学习系列丨分页篇】PageHelper 分页插件导入集成实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

文章目录

  • 一、说明
    • 什么是分页
    • PageHelper介绍
  • 二、导入依赖
  • 三、集成Spring框架中
  • 四、编写Service
  • 五、编写Controller
  • 六、编写queryAllByPage页面展示数据


一、说明

什么是分页

在这里插入图片描述

​ 针对分页,使用的是PageHelper分页插件,版本使用的是5.1.8

​ 参考文档

PageHelper介绍

PageHelper是适用于MyBatis框架的一个分页插件,它支持基本主流与常用的数据库,如MySQL、Oracle、MariaDB、SQLite、Hsqldb等。

特性

简单易用: PageHelper 提供了简单的配置方式,可以轻松地在 MyBatis 中启用分页功能。
支持多种数据库: PageHelper 支持多种数据库,包括 MySQL、Oracle、PostgreSQL、SQL Server 等。
丰富的功能: PageHelper 提供了丰富的功能,包括基本的分页查询、排序、物理分页、内存分页等。
可定制化: PageHelper 提供了丰富的配置选项,可以根据实际需求进行定制。

使用步骤

引入 PageHelper 依赖:在 Maven 或者 Gradle 项目中引入 PageHelper 的依赖。
配置 PageHelper:在 MyBatis 的配置文件中配置 PageHelper 插件,指定数据库类型和方言。
分页查询:在需要进行分页查询的方法中,使用 PageHelper.startPage 方法指定分页参数。
获取分页结果:通过 PageHelper 提供的 PageInfo 类来获取分页结果。

PageHelper的使用方式非常便捷,可以在原始SQL查询语句之前添加PageHelper.startPage(pageNum, pageSize);来启动分页。在查询结束后,通过PageInfo对象可以获取分页信息,如总记录数、总页数、每页大小等。

PageHelper的实现原理基于拦截器(Interceptor),在执行相关SQL之前会拦截并做分页处理。通过ThreadLocal机制,将分页参数保存在当前线程中,确保了分页参数的安全性和准确性。

PageHelper还提供了丰富的配置选项和自定义功能,可以根据实际需求进行灵活配置和使用。例如,可以配置是否支持带有“for update”的查询语句,是否支持嵌套查询等。

总的来说,PageHelper是一款功能强大且易于使用的分页插件,适用于MyBatis框架的分页处理,可以大大简化开发人员的工作量,提高开发效率。

二、导入依赖

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

三、集成Spring框架中

<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="mapperLocations" value="classpath:mappers/*.xml"/><property name="plugins"><array><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><value>helperDialect=mysqlreasonable=truepageSizeZero=true</value></property></bean></array></property>
</bean>

四、编写Service

​ 个人习惯:我的习惯是把分页功能定义到业务层,也就是Service层中,当然你也把分页功能实现在Controller层中。

public interface AccountService {// 带分页查询public PageInfo<Account> queryAllByPage(Integer currentPage,Integer pageSize);
}
@Service
public class AccountServiceImpl implements AccountService {@Overridepublic PageInfo<Account> queryAllByPage(Integer currentPage, Integer pageSize) {PageHelper.startPage(currentPage,pageSize);List<Account> accounts = accountMapper.selectAll();PageInfo<Account> pageInfo = new PageInfo<Account>(accounts);return pageInfo;}
}

五、编写Controller

@Controller
public class AccountController {@Autowiredprivate AccountService accountService;@RequestMapping(value = "/queryAllByPage")public String queryAllByPage(@RequestParam(name = "currentPage",required = true,defaultValue = "1")Integer currentPage, Model model){PageInfo<Account> pageInfo = accountService.queryAllByPage(currentPage , 10);model.addAttribute("pageInfo",pageInfo);return "queryAllByPage";}
}

六、编写queryAllByPage页面展示数据

<%@ page pageEncoding="UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html><body><c:forEach items="${pageInfo.list}" var="account">${account.name} <br/></c:forEach><c:forEach begin="1" end="${pageInfo.pages}" step="1" var="currentPage"><a href="">第${currentPage}</a></c:forEach><br/>当前页:${pageInfo.pageNum} <br/>总记录数:${pageInfo.total} <br/>总页数:${pageInfo.pages} <br/>导航页码数:${pageInfo.navigatePages} <br/><c:forEach items="${pageInfo.navigatepageNums}" var="currentPage"><a href="${pageContext.request.contextPath}/queryAllByPage?currentPage=${currentPage}">第${currentPage}</a></c:forEach></body>
</html>

在这里插入图片描述

这篇关于【SSM进阶学习系列丨分页篇】PageHelper 分页插件导入集成实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959478

相关文章

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

spring6+JDK17实现SSM起步配置文件

《spring6+JDK17实现SSM起步配置文件》本文介绍了使用Spring6和JDK17配置SSM(Spring+SpringMVC+MyBatis)框架,文中通过示例代码介绍的非常详细,对大家的... 目录1.配置POM文件2.在resource目录下新建beans.XML文件,用于配置spirng3

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.