使用PageHelper进行分页

2023-09-21 16:36:17

在这里插入图片描述

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进行分页查询了。记得在前端视图中展示分页导航条和处理分页参数。

更多推荐

【业务功能篇112】maven 指定打包某个module子模块 打包命令参数

-am--also-make构建所列模块的所有依赖模块;-pl--projects<arg>构建制定的模块,模块间用逗号分隔;指定settings.xml打包mvncleanpackage--settingsC:\Users\Admini\.m2\settings.xml如果需要根据指定的settings.xml文件打

html综合案例2

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initi

软信天成:如何提高云数据仓库的数据质量?

随着云计算的深入普及、5G和边缘计算等技术带来了数据量的爆发增长,数据驱动商业运作向实时化和自动化迈进,越来越多的企业开始考虑嵌入基于云计算的企业数据仓库,以Snowflake、MicrosoftSynapseAnalytics、GoogleBigQuery、AmazonRedshift等为代表的云数据仓库或成为数据时

神经网络案例分析

神经网络(neuralnetwork)是一种模拟人脑神经思维方式的数据模型,神经网络有多种,包括BP神经网络、卷积神经网络,多层感知器MLP等,最为经典为神经网络为多层感知器MLP(Multi-LayerPerception),SPSSAU默认使用该模型。类似其它的机器学习模型(比如决策树、随机森林、支持向量机SVM等

STM32 CAN使用记录:FDCAN基础通讯

文章目录目的基础说明关键配置与代码轮询方式中断方式收发测试示例链接总结目的CAN是非常常用的一种数据总线,被广泛用在各种车辆系统中。这篇文章将对STM32中FDCAN的使用做个示例。CAN的一些基础介绍与使用可以参考下面文章:《CAN基础概念》https://blog.csdn.net/Naisu_kun/articl

贸易战的影响:跨境电商的“黑洞”风险与机遇

当今全球贸易局势充满了不确定性和动荡。贸易战的阴云笼罩下,跨境电商企业面临着前所未有的挑战,但与此同时,也蕴藏着巨大的机遇。本文将深入探讨贸易战对跨境电商的影响,以及企业在这个新现实中如何应对风险并寻找机遇。贸易战的背景贸易战是国家之间为争夺贸易利益而采取的一系列贸易政策和关税措施的冲突。近年来,中美之间的贸易战引起了

大模型股票交易-挖掘新闻和情绪价值

埃隆·马斯克(ElonMusk)的星际飞船于2023年4月20日升空后爆炸。想象一下,当时您正在观察股市,突然出现新闻,您会如何交易TSLA股票?我希望您不要与我争论,您作为交易者(而不是投资者)要做的第一件事就是摆脱现有的多头头寸并可能做空股票。让我们看看这样的交易是否有利可图。根据此链接SpaceXrocketla

飞驰的高铁-第15届蓝桥杯第一次STEMA测评Scratch真题精选

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第150讲。飞驰的高铁,本题是2023年8月20日举行的第15届蓝桥杯STEMA测评Scratch编程中级组编程第2题,题目要求编程实现模拟高铁飞驰前进的效果。当按下数字1时,画面中的景

游戏创业小知识:游戏运营的步骤和流程

游戏运营是确保游戏在持续运行中保持活跃和成功的过程。以下是游戏运营的一般步骤流程:1.游戏发布前准备游戏选择:了解并熟悉游戏的核心概念、目标受众和游戏玩法。开发团队:组建开发团队,包括程序员、设计师、艺术家和声音设计师等。技术基础设施:建立游戏服务器、数据库和其他必要的技术基础设施。资金筹集:获取足够的资金来支持游戏的

原生微信小程序中进行 API 请求

原生微信小程序中进行API请求当在原生微信小程序中进行API请求时,封装请求可以提高代码的可维护性和可扩展性。在本篇博客中,我们将一步步介绍如何进一步封装请求,并添加请求超时、拦截器和请求取消功能。第一步:基本请求封装首先,我们创建一个用于发送HTTP请求的基本封装。在微信小程序中,我们使用wx.request发送请求

day41 jdk8新特性Stream流 数据库安装

流(Stream)中保存了对集合或者数组数据的操作,和集合类似,但是集合中保存的是数据。Stream不能保存数据一、创建流通过Collection对象的stream()或者parallelStream()通过Arrays类的stream(Array[]<T>)方法通过Stream接口of()iterate()gener

热文推荐