使用PageHelper进行分页

news2024/11/25 18:54:26

使用PageHelper进行分页

  • 1. 使用Spring Boot
  • 2. 不使用Spring Boot的实现

在这里插入图片描述

1. 使用Spring Boot

要在Spring MVC中使用PageHelper进行分页,你需要完成以下几个步骤:

  1. 添加PageHelper依赖:在你的项目中添加PageHelper的Maven或Gradle依赖。例如,如果你使用Maven,可以在pom.xml文件中添加以下依赖:
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>
  1. 配置PageHelper:在Spring MVC的配置文件(通常是application.propertiesapplication.yml)中,配置PageHelper的属性。例如,你可以指定数据库方言、分页插件的参数等。以下是一个示例的application.properties配置:
# 数据库方言
pagehelper.helperDialect=mysql
# 是否进行分页合理化
pagehelper.reasonable=true
# 是否支持通过Mapper接口参数来传递分页参数
pagehelper.supportMethodsArguments=true
  1. 在Mapper接口中使用PageHelper:在你的Mapper接口中,使用PageHelper提供的静态方法来实现分页。例如,你可以在查询方法中调用PageHelper.startPage()来开启分页功能,然后执行查询操作。以下是一个示例:
import com.github.pagehelper.PageHelper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface YourMapper {
    List<YourEntity> queryEntities();

    default List<YourEntity> queryEntitiesWithPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        return queryEntities();
    }
}
  1. 在Controller中使用分页查询:在Spring MVC的Controller中,调用Mapper接口中定义的分页查询方法,并将结果传递给前端视图进行展示。以下是一个示例:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class YourController {
    @Autowired
    private YourMapper yourMapper;

    @GetMapping("/entities")
    public String getEntities(int pageNum, int pageSize, Model model) {
        model.addAttribute("entities", yourMapper.queryEntitiesWithPage(pageNum, pageSize));
        return "entities";
    }
}

在上述示例中,getEntities()方法接收pageNumpageSize作为参数,调用Mapper接口的分页查询方法,并将查询结果添加到Model中,然后返回一个视图名。

完成上述步骤后,你就可以在Spring MVC中使用PageHelper进行分页查询了。记得在前端视图中展示分页导航条和处理分页参数。

2. 不使用Spring Boot的实现

如果你不使用Spring Boot,而是使用传统的Spring MVC框架,你可以按照以下步骤来实现PageHelper的分页功能:

  1. 添加PageHelper依赖:在你的项目中添加PageHelper的Maven或Gradle依赖,可以在Maven的pom.xml文件中添加以下依赖:
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.1</version>
</dependency>
  1. 配置PageHelper:在Spring的配置文件(例如applicationContext.xml)中,配置PageHelper的属性。以下是一个示例的配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <!-- 配置数据源相关属性 -->
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 配置其他属性 -->
</bean>

<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

<bean id="pageHelper" class="com.github.pagehelper.PageHelper">
    <property name="properties">
        <value>
            dialect=mysql
            reasonable=true
            supportMethodsArguments=true
        </value>
    </property>
</bean>

在上述配置中,我们配置了数据源、SqlSessionFactory和SqlSessionTemplate,然后创建了一个PageHelper的Bean,并设置了PageHelper的属性。

  1. 配置MyBatis拦截器:由于PageHelper是一个MyBatis的拦截器,我们需要将PageHelper添加到MyBatis的拦截器链中。在上面的配置文件中,我们可以在SqlSessionFactory中添加以下配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 配置其他属性 -->
    <property name="plugins">
        <array>
            <ref bean="pageHelper" />
        </array>
    </property>
</bean>
  1. 在Mapper接口中使用PageHelper:在你的Mapper接口中,使用PageHelper提供的静态方法来实现分页。例如,你可以在查询方法中调用PageHelper.startPage()来开启分页功能,然后执行查询操作。以下是一个示例:
import com.github.pagehelper.PageHelper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface YourMapper {
    List<YourEntity> queryEntities();

    default List<YourEntity> queryEntitiesWithPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        return queryEntities();
    }
}
  1. 在Controller中使用分页查询:在Spring MVC的Controller中,调用Mapper接口中定义的分页查询方法,并将结果传递给前端视图进行展示。以下是一个示例:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class YourController {
    @Autowired
    private YourMapper yourMapper;

    @GetMapping("/entities")
    public String getEntities(int pageNum, int pageSize, Model model) {
        model.addAttribute("entities", yourMapper.queryEntitiesWithPage(pageNum, pageSize));
        return "entities";
    }
}

在上述示例中,getEntities()方法接收pageNumpageSize作为参数,调用Mapper接口的分页查询方法,并将查询结果添加到Model中,然后返回一个视图名。

完成上述步骤后,你就可以在Spring MVC中使用PageHelper进行分页查询了。记得在前端视图中展示分页导航条和处理分页参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

22年4月后树莓派烧录镜像、联网以及ssh 远程投屏失败的注意事项

1. 树莓派刷机 树莓派在22年4月后新增了关于对用户安全的修改&#xff0c;所以之前的在SD 卡中放入ssh文件以及wifi 账号和密码的方法已经不好使了。很多用户发现烧录镜像后找不到树莓派ip了&#xff0c;特别是没有屏幕的用户&#xff0c;ssh更是连接不上。 解决办法就是官网…

[C#]vs2022安装后C#创建winform没有.net framework4.8

问题&#xff0c;我已经在visualstudio安装程序中安装了.net框架4.8的SDK和运行时。 然而&#xff0c;我在visual studio 2022中找不到已安装的框架。 我已经检查了我的VS 2019&#xff0c;它可以很好地定位网络框架4.8&#xff0c;它可以构建我的项目。但VS 2022不能。 我已经…

RocketMQ源码解析(上)

一、ACL权限控制 应用场景&#xff1a; ​RocketMQ提供了针对队列、用户等不同维度的非常全面的权限管理机制。通常来说&#xff0c;RocketMQ作为一个内部服务&#xff0c;是不需要进行权限控制的&#xff0c;但是&#xff0c;如果要通过RocketMQ进行跨部门甚至跨公司的合作&…

公司如何监控员工自己的电脑(监控单位员工电脑的几个好用的方法)

在现代的商业环境中&#xff0c;公司需要在保护敏感数据和确保员工生产力之间找到平衡。为此&#xff0c;许多公司选择监控员工的电脑使用情况。本文将详细介绍如何专业且有效地监控公司员工电脑。 一、为何需要监控员工电脑 公司可能会出于各种原因去监控员工的电脑使用&…

CSS中的定位

position 的属性与含义 CSS 中的 position 属性用于控制元素在页面中的定位方式&#xff0c;有四个主要的取值&#xff0c;每个取值都会影响元素的布局方式&#xff0c;它们是&#xff1a; static&#xff08;默认值&#xff09;&#xff1a; 这是所有元素的初始定位方式。在静…

字符函数和字符串函数(C语言进阶)

字符函数和字符串函数 一.求字符串长度1.strlen 二.长度不受限制的字符串函数介绍1.strcpy2.strcat3.strcmp 前言 C语言中对字符和字符串的处理很是频繁&#xff0c;但是C语言本身是没有字符串类型的&#xff0c;字符串通常放在常量字符串中或者字符数组中。 字符串常量适用于那…

[刷题记录]牛客面试笔刷TOP101(二)

(一)传送门: [刷题记录]牛客面试笔刷TOP101(一)_HY_PIGIE的博客-CSDN博客 目录 1.合并二叉树 2.二叉树的镜像 3.判断是否为二叉搜索树 4.判断是不是完全二叉树 1.合并二叉树 合并二叉树_牛客题霸_牛客网 (nowcoder.com) 思路: 在后序遍历的基础上进行,两颗二叉树可…

【网络协议】Http-中

搜索引擎&#xff1a;搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上采集信息&#xff0c;在对信息进行组织和处理后&#xff0c;为用户提供检索服务&#xff0c;将检索的相关信息展示给用户的系统。搜索引擎是工作于互联网上的一门检索技术&#xff0c;它旨在提…

WPF 类库 使用handycontrol 配置

在学习wpf发现了一个非常好用的UI库 handycontrol 但是很多地方讲的都是WPF应用程序怎么用&#xff0c;很少有讲类库那么引用的问题&#xff0c;所以在这里自己总结一下&#xff0c;希望能帮助到大家&#xff1a; 1.添加 handycontrol 的引用&#xff1b;安装&#xff0c;我已…

Webpack打包图片

一、在js文件中引入图片 二、在package.config.js中配置加载器 module.exports {mode: "production", // 设置打包的模式&#xff1a;production生产模式 development开发模式module: {rules: [// 配置img加载器{test: /\.(jpg|png|gif)$/i,type:"asset/resou…

计算机竞赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 inception_v3网络5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(六)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 模型训练1&#xff09;数据集分析2&#xff09;数据预处理3&#xff09;模型创建4&#xff09;模型训练5&#xff09;获取特征矩阵 2. 后端Django3. 前端微信小程序1&#xff09;小程序全局配置文件2&#xff09…

【广州华锐互动】煤矿坍塌VR事故警示教育突破了哪些限制?

煤矿坍塌事故是煤矿行业的一种常见事故&#xff0c;对于矿工的生命安全和生产设备都存在着严重威胁。传统的安全培训方式往往难以真实地呈现事故场景&#xff0c;难以达到理想的安全教育效果。而虚拟现实&#xff08;VR&#xff09;技术的出现&#xff0c;为煤矿安全教育带来了…

测试人职场生存必须避开的5个陷阱

在互联网职场的工作发展道路上&#xff0c;软件测试人员其实在公司中也面临着各种各样的职场陷阱&#xff0c;有些可能是因为项目业务不熟练造成的&#xff0c;有些可能是自身技术能力不足导致的...等等。软件测试入门相对来说比较容易些&#xff0c;但是想要在测试行业长久发展…

力扣刷题-数组-数组理论基础

数组是存放在连续内存空间上的相同类型数据的集合。 需要两点注意的是 数组下标都是从0开始的。数组内存空间的地址是连续的 正是因为数组的在内存空间的地址是连续的**&#xff0c;所以我们在删除或者增添元素的时候&#xff0c;就难免要移动其他元素的地址。** 注意&…

S型加减速行车位置控制(支持点动和停靠位置搜索)

S型加减速位置控制详细算法和应用场景介绍&#xff0c;请查看下面文章博客。本篇文章不再赘述&#xff0c;这里主要介绍点动动和位置点搜索功能。 S速度曲线轨迹规划(普通变频位置闭环控制算法详细介绍SCL代码)_s曲线轨迹规划_RXXW_Dor的博客-CSDN博客位置控制用PD控制器&…

Rsync学习笔记2

Rsync&#xff1a; 增量操作&#xff1a; 1&#xff09; server01服务文件变动。 [rootserver03 tp5shop]# rsync -av /usr/local/nginx/html/tp5shop root192.168.17.109:/usr/local/nginx/html/ sending incremental file listsent 88,134 bytes received 496 bytes 177,…

KMP,ACM集训

目录 831. KMP字符串 输入格式 输出格式 数据范围 输入样例&#xff1a; 输出样例&#xff1a; 解析&#xff1a;KMP模板 D - Cyclic Nacklace 解析&#xff1a;KMP-next数组应用循环字符串判断 F - Power Strings 解析&#xff1a;KMP-next数组应用循环字符串判断 H - …

Haproxy负载均衡群集

HAproxy搭建Web群集一、Web集群调度器1、常见的Web集群调度器2、常用集群调度器的优缺点&#xff08;LVS ,Nginx,Haproxy)2.1 Nginx2.2 LVS2.3 Haproxy 3、LVS、Nginx、HAproxy的区别 二、Haproxy1、简介2、Haproxy应用分析3、HAProxy的主要特性4、Haproxy调度算法&#xff08;…

智慧云图书馆: 能支撑智慧图书馆服务体系的图书馆管理与服务平台

一、开源项目简介 柏拉图 PLATO 智慧云图书馆&#xff1a; 能支撑智慧图书馆服务体系的图书馆管理与服务平台。 二、开源协议 未使用主流开源协议 三、界面展示 四、功能概述 平台优势 总分馆架构&#xff1a;不再是信息的孤岛&#xff0c;而是共享信息的平台。友好的界…