当前位置: 首页 > news >正文

【硬着头皮】PageHelper 必须用来分页?

前言

硬着头皮看看... 这些都是发现在一些项目里面的一些代码片段。

 

 

正文

 

案发现场:

项目查询数据需要分页查询,因此引入了PageHelper。

然后出现需求,一个接口需要分页查询,一个接口是查询全部。

 

作案手法:

作案者机智地写了两个查询接口,一个使用PageHelper做为分页,一个不使用。

 

 盘问:

来自我的友好试探: 这么写着不累么?

作案者平淡无奇: 那有啥办法,这边分页查询,那边说不用分。

:你不是用来PageHelper么,为啥还要写两套?

作案者满脸疑惑 这是用来写分页的,还有不分页的接口只能分开写。

我(若有所思):行吧,你把代码提交我来教你用PageHelper。

 

改动:

在mybatis-config.xml文件加入配置:

    <plugins>

        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!--name:不用进行改变;value=”mysql”你所使用的数据库类型【mysql/oracle】-->
          <property name="dialect" value="mysql" />

         <!-- 该参数默认为false设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 和startPage中的pageNum效果一样-->

            <property name="offsetAsPageNum" value="true" />

            <!-- 该参数默认为false设置为true时,使用RowBounds分页会进行count查询-->

            <property name="rowBoundsWithCount" value="true" />

            <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->

            <property name="pageSizeZero" value="true" />

            <!-- 3.3.0版本可用- 分页参数合理化,默认false禁用 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据-->

            <property name="reasonable" value="true" />

            <!-- 3.5.0版本可用- 为了支持startPage(Object params)方法 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值-->

            <property name="params"

                      value="pageNum=start;pageSize=limit;pageSizeZero=zero;reasonable=heli;count=contsql" />

        </plugin>

    </plugins>

代码使用: 

简单解释:

如果想使用pageHelper ,但是想支持查询所有(不分页)

传入参数pageSizeZero (true),那么这时候 传入的 pageSize如果为0,那么就是查询全部。

reasonable参数如果设置为true传入:

如果pageNum<1会查询第一页,如果pageNum>pages(总页数)会查询最后一页

count参数如果设置为true传入:

在执行查询语句前,会执行一次count统计,

 

相关文章:

  • Java 使用LRUmap设计一个简单的缓存场景
  • MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
  • 先了解清楚 脏读、不可重复读、幻读,再谈事务隔离机制
  • ActiveMQ 启动报错 Address already in use: JVM_Bind 5672
  • ActiveMQ 无法注入 jmsMessagingTemplate
  • ActiveMQ 报错 Could not connect to xxxxxxx , hostname can‘t be null
  • Springboot ActiveMQ 消息重发延迟时间 坑记
  • Springboot 整合 spring batch 实现批处理 ,小白文实例讲解
  • Springboot 使用Jackson 操作 json数据,各场景实例
  • Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程
  • Java 将List<String> 转为以逗号 ‘,’ 拼接的字符串
  • Java 基于原生HttpURLConnection ,调用GET 和 POST请求 工具类
  • Java 识别请求来自移动端还是电脑端
  • MySql 别犯糊涂了! LEFT JOIN 的 ON 后接上筛选条件,多个条件会出事!
  • 微服务 分布式事务解决方案
  • 收藏网友的 源程序下载网
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • const let
  • JavaScript-Array类型
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Promise面试题,控制异步流程
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Service Worker
  • SOFAMosn配置模型
  • vue 配置sass、scss全局变量
  • Vue.js-Day01
  • windows下mongoDB的环境配置
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 爬虫模拟登陆 SegmentFault
  • 判断客户端类型,Android,iOS,PC
  • 前端之React实战:创建跨平台的项目架构
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 微信小程序:实现悬浮返回和分享按钮
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 阿里云API、SDK和CLI应用实践方案
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​Python 3 新特性:类型注解
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #NOIP 2014#Day.2 T3 解方程
  • #微信小程序(布局、渲染层基础知识)
  • (1)虚拟机的安装与使用,linux系统安装
  • (27)4.8 习题课
  • (论文阅读40-45)图像描述1
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十三)Flask之特殊装饰器详解
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET开发人员必知的八个网站