PageHepler分页插件使用

如何用pagehelper实现分页 引言作为后端开发人员,写分页可谓是基本操作了,各种大大小小的项目都少不了写分页,但是如果自己实现的话,虽然难度不大,但是还是比较繁琐的,而且容易写错,这时候,我们就可以利用前辈大佬造的轮子了--pagehelper ,pagehelper是一款分页插件,利用它,我们就可以很方便的实现分页,极大的提高我们的开发效率如何使用1.引入相关依赖<!-- https://mvnrepository.c... 阅读详情

1. 在SqlSessionFactoryBean中配置

pom.xml先导入依赖:

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>
 <!--使用分页插件-->
        <property name="plugins">
            <array>
                <!-- 传入插件的对象 -->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <prop key="helperDialect">oracle</prop>
                            <!--reasonable:分页合理化参数-->
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
  

2.在返回对象之前进行书写(必须是前一行,否则失效)

    //startPage后紧跟的这个查询就是分页查询

在这里插入图片描述

3.控制层代码(核心PageInfo对象的使用)

    @RequestMapping("/findAll.do")
    public ModelAndView findAll(@RequestParam(value = "page",defaultValue = "1",required = true) int page,
                                @RequestParam(value = "size",defaultValue = "4",required = true) int size){
        ModelAndView view = new ModelAndView();
        List<Orders> list = ordersService.findAll(page,size);
        /*将返回的对象进行写入到pageInfo对象中
        pageINfo封装了分页的详细信息*/
        PageInfo<Orders> pageInfo = new PageInfo<>(list);

        view.addObject("pageInfo",pageInfo);
        view.setViewName("orders-page-list");
        return  view;
    }

4. pageInfo 类的具体说明

public class PageInfo<T> implements Serializable {
    private static final long serialVersionUID = 1L;
    //当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;
 
    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"
 
    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总记录数
    private long total;
    //总页数
    private int pages;
    //结果集
    private List<T> list;
 
    //前一页
    private int prePage;
    //下一页
    private int nextPage;
 
    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
    //导航条上的第一页
    private int navigateFirstPage;
    //导航条上的最后一页
    private int navigateLastPage;
 
    public PageInfo() {
    }
 
    /**
     * 包装Page对象
     *
     * @param list
     */
    public PageInfo(List<T> list) {
        this(list, 8);
    }
 
    /**
     * 包装Page对象
     *
     * @param list          page结果
     * @param navigatePages 页码数量
     */
    public PageInfo(List<T> list, int navigatePages) {
        if (list instanceof Page) {
            Page page = (Page) list;
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
 
            this.pages = page.getPages();
            this.list = page;
            this.size = page.size();
            this.total = page.getTotal();
            //由于结果是>startRow的,所以实际的需要+1
            if (this.size == 0) {
                this.startRow = 0;
                this.endRow = 0;
            } else {
                this.startRow = page.getStartRow() + 1;
                //计算实际的endRow(最后一页的时候特殊)
                this.endRow = this.startRow - 1 + this.size;
            }
        } else if (list instanceof Collection) {
            this.pageNum = 1;
            this.pageSize = list.size();
 
            this.pages = this.pageSize > 0 ? 1 : 0;
            this.list = list;
            this.size = list.size();
            this.total = list.size();
            this.startRow = 0;
            this.endRow = list.size() > 0 ? list.size() - 1 : 0;
        }
        if (list instanceof Collection) {
            this.navigatePages = navigatePages;
            //计算导航页
            calcNavigatepageNums();
            //计算前后页,第一页,最后一页
            calcPage();
            //判断页面边界
            judgePageBoudary();
        }
    }
 
 
.......

5.页面具体使用

                    <div class="box-tools pull-right">
                        <ul class="pagination">
                            <li>
                                <a href="${pageContext.request.contextPath}/orders/findAll.do?page=1&size=${pageInfo.pageSize}" aria-label="Previous">首页</a>
                            </li>
                            <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum-1}&size=${pageInfo.pageSize}">上一页</a></li>
							<c:forEach begin="1" end="${pageInfo.pages}" var="pageNum">
								<li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageNum}&size=${pageInfo.pageSize}">${pageNum}</a></li>
							</c:forEach>

                            <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum+1}&size=${pageInfo.pageSize}">下一页</a></li>
                            <li>
                                <a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pages}&size=${pageInfo.pageSize}" aria-label="Next">尾页</a>
                            </li>
                        </ul>
                    </div>

开源网址

github项目地址:https://github.com/pagehelper/Mybatis-PageHelper
码云 项目地址:http://git.oschina.net/free/Mybatis_PageHelper

SSM全注解方式使用PageHelper实现分页查询(日志为例) Dept 1. 添加依赖 &lt;dependency&gt; &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt; &lt;artifactId&gt;pagehelper&lt;/artifactId&gt; &lt;version&gt;5.1.2&lt;/version&gt; &lt;/dependency& 阅读详情

相关推荐

JSD-2204-(业务逻辑开发)-开发分类功能-分页查询-Day08

JSD-2204-(业务逻辑开发)-开发分类功能-分页查询-Day08

TheNewSystrm的博客 1049

PageHelper详解

PageHelper pagehelper是mybatis 提供的分页插件,目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库。 使用方法 原始样式,每页显示多条数据,现在的需求是每页显示4条数据 后端 导入依赖 依赖: pagehelper 开始分页 Service 方法调用SQL查询前添加 PageHelper.startPage PageHelper.startPage(1, 20); 这里有两个参数,分别为:page=1,rows=2

qq_45578181的博客 7万+

NY8A053E 例程 之 PWM Ouput

更多关于NY8A053E的相关例程请留言!

倪彬笑阳的博客 2924

Mybatis分页查询插件PageHelper简单入门

Mybatis分页查询插件PageHelper简单入门 ​ 最近在在搭建一个SSM项目时需要做一个分页查询功能。一开始想着去自己实现分页功能,自己定义一个PageBean之类的,然后手动实现。但是通过查询相关资料发现,MyBatis有一个实现分页功能的插件PageHelper,能够快速的帮助我们实现分页,不用我们自己动手,避免了很多的重复繁琐工作。 直接进入正题,下面我们就来聊一聊PageHelper。 1.PageHelper简介 官网: https://pagehelper.github.io/ 一款

String小四的博客 669

AI Agent评估:指标、策略与最佳实践

AI智能体正逐渐融入到各个领域,从日常的对话助手到复杂的工作流程自动化,其应用范围不断拓展。然而,确保这些智能体能够可靠、高效地完成任务至关重要,这就使得AI智能体评估成为了人工智能发展过程中不可或缺的一环。本文将深入探讨AI智能体评估的指标、策略以及最佳实践,为读者全面解读这一关键领域。

llm_way的博客 3498

比例导引算法详解:从理论到Matlab实现(含3D轨迹可视化)

本文深入解析比例导引算法(PNG)的数学原理与Matlab实现,涵盖3D轨迹可视化技术。从基础运动学模型到导航比优化,详细讲解导弹拦截系统的核心算法,并提供Matlab代码示例,帮助读者掌握从理论到实战的全流程。

weixin_33725722的博客 548

pagehepler 分页插件

1. 使用 maven 引入分页插件: 在 pom.xml 中添加如下依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>最新版本<...

ScorpC的博客 232

NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)

NE555构成多谐振荡器及三角波、正弦波的生成 续上一篇:NE555基本原理及相关公式的推导

qq_49979053的博客 5万+

pagehepler分页插件

一、pagehelper介绍 pagehepler是一款可以帮助我们快速实现分页的插件,总之就是比传统的分页方式方便太多。话不多说,直接上手pagehelper插件的使用。 二、需要导入的依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId>

qq_43784314的博客 895

【StarRocks】-- DATETIME 与 TIMESTAMP 区别详解

本文详细解析了StarRocks中DATETIME/DATETIMEV2与TIMESTAMP的区别及使用场景。DATETIME系列存储人类可读时间,不携带时区;TIMESTAMP实际指Unix时间戳,建议用BIGINT存储。关键差异包括:精度选择(DATETIMEV2支持微秒级)、时区处理(仅函数计算时影响)、存储方式等。针对不同场景提供选型建议:单时区展示用DATETIMEV2,跨时区计算用BIGINT存储Epoch。特别强调与MySQL迁移时的注意事项,并给出常见问题解决方案和最佳实践清单,包括统一入口

欢迎来到我的博客,一起探索代码里的世界! 496

【数据湖仓】:Iceberg、Hudi 和 Paimon 对比

适用于需要多计算引擎支持和复杂查询的离线批处理场景。其中立性和灵活性使其成为构建新型数据平台的理想选择。:在需要高频数据更新和高效小文件管理的场景中表现出色,适合实时数据处理和增量数据更新的业务需求。:专为实时流式数据处理设计,适用于对数据实时性要求高的业务场景,如实时数据分析和实时指标监控。通过以上分析,可以看出 Apache Iceberg、Apache Hudi 和 Apache Paimon 各有其独特的优势和适用场景。企业应根据自身业务需求和技术栈选择合适的数据湖仓方案,以充分发挥其价值。

欢迎来到我的博客,一起探索代码里的世界! 1607

Mybatis分页插件-PageHepler的使用

使用方法 1. 引入分页插件 引入分页插件一共有下面2种方式,推荐使用Maven方式,这种方式方便更新。 1). 引入Jar包 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的jar即可下载) https://os...

chuixuan3775的博客 233

微波技术仿真:微波谐振器分析_(2).微波谐振器理论

谐振器是一种能够在特定频率范围内存储和释放电磁能量的器件。在微波频段,谐振器通常用于滤波、频率选择和能量存储等应用。一个理想的谐振器在谐振频率下能够存储无限大的能量,但在实际应用中,由于损耗的存在,谐振器的性能会受到一定限制。微波谐振器在微波通信、雷达系统、微波测量和微波电路设计等领域中发挥着重要作用。谐振器的设计需要考虑多个因素,包括谐振频率的精确控制、损耗的最小化、频率稳定性的提高和小型化设计。通过理论分析和仿真工具的使用,可以有效优化谐振器的性能,满足实际应用的需求。

2401_87715305的博客 932

spring boot之分页插件PageHepler

一.使用原生的PageHepler 1.添加依赖 &lt;dependency&gt; &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt; &lt;artifactId&gt;pagehelper&lt;/artifactId&gt; &lt;version&gt;4.1.3&lt;/version&gt; &l

stryang的博客 479

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏

jks212454的博客 1810

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ssm mysql分页_SSM 使用 mybatis 分页插件 pagehepler 实现分页

前几天在这里分享了手写 sql 分页查询实现分页,现在来看看使用 mybatis 分页插件 pagehepler 来实现分页使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,比写一段完整的分页sql代码,也能减少了误差性。我这里使用 maven 工程实现:1.首先导入分页插件的依赖:1 2 com.github.pagehelper3 pagehelper4 ...

weixin_29525745的博客 335

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SSM 使用 mybatis 分页插件 pagehepler 实现分页

前几天在这里分享了手写 sql 分页查询实现分页,现在来看看使用 mybatis 分页插件 pagehepler 来实现分页 使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,比写一段完整的分页sql代码,也能减少了误差性。 Mybatis分页插件 demo 项目地址:https://gitee.com/free/Mybatis_PageHelper 我这里使用 ma...

weixin_30532837的博客 242

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【分页插件PageHepler-内存泄漏坑】

PageHelper采用ThreadLocal实现分页操作,执行SQL语句之前调用PageHepler.startPage方法,之后未正常后续SQL语句,可能会存在未清除PageHepler中的分页参数,从而引发内存泄漏问题。至此,PageHepler测试项目搭建完成。至此,问题找到,接下来进行问题验证。新增Spring Boot项目。改造完成上线后未再复现此问题。

wangbo199675的博客 397

# Mybatis分页插件-PageHepler的使用

Mybatis分页插件-PageHepler的使用 使用方法 1. 引入分页插件 引入分页插件一共有下面2种方式,推荐使用Maven方式,这种方式方便更新。 1). 引入Jar包 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的jar即可下载) https://oss.sonatype.org/content/repo...

Lambda 188

MyBatis 学习笔记(六)分页插件PageHepler

MyBatis 学习笔记(六)分页插件PageHepler源码:https://github.com/pagehelper/Mybatis-PageHelper中文文档:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md集成使用 PageHelper 你只需要在 classpath 中包...

yangliuhbhd的博客 374

rethat安装MySQL多例_SSM 使用 mybatis 分页插件 pagehepler 实现分页

前几天在这里分享了手写 sql 分页查询实现分页,现在来看看使用 mybatis 分页插件 pagehepler 来实现分页使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,比写一段完整的分页sql代码,也能减少了误差性。我这里使用 maven 工程实现:1.首先导入分页插件的依赖:com.github.pagehelperpagehelper5.0.02.配置分页拦截器插件官方文档...

weixin_35375774的博客 181

SpringBoot案例-员工管理-分页查询-PageHelper插件

在业务实现层中,首先调用PageHepler插件中的startPage()方法,设置查询页码(page)和页面容量(pageSize),然后调用Mapper接口中的list()方法,获取所有的结果集合,然后将结果集合进行类型转化,最后将查询结果进行封装,其中参数,可直接调用pageHepler中的gettotal()和getResult()方法进行设置。上述两条SQL语句,我们并没有编写,这都是PageHepler插件自动进行执行的,以获取所需的参数。,详细了解PageHepler插件见。

weixin_64939936的博客 390

详解 Mybatis 分页操作及分页插件相关实现原理

Mybatis 目前是非常流行的 ORM 框架,这篇 Chat 通过介绍以下知识来深入了解学习 Mybatis 分页相关的实现原理: Mybatis 逻辑分页(RowBounds)实现原理 Mybatis 针对不同数据库类型物理分页实现 常用分页插件 PageHepler 实现原理简单介绍 自定义分页插件 ...

GitChat 5646
上一篇: SSM——整合可能出现的问题
下一篇: springSecurity快速入门
First_____
博客等级 码龄6年 132粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值