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

简介: 【硬着头皮】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>


代码使用:


 image.png


简单解释:


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


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


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


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


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


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


image.png

相关文章
SpringMVC解决下载文件名乱码的问题
SpringMVC解决下载文件名乱码的问题
247 0
|
SQL Oracle 关系型数据库
Oracle系列十七:Sqluldr2与Sqlldr
Oracle系列十七:Sqluldr2与Sqlldr
|
Java 网络安全 Maven
简记:一个flutter构建错误A problem occurred configuring project ‘:smart_auth‘. > Could not res
简记:一个flutter构建错误A problem occurred configuring project ‘:smart_auth‘. > Could not res
764 0
|
网络协议 物联网 网络性能优化
物联网网络协议-MQTT协议的使用
物联网网络协议-MQTT协议的使用
470 2
|
6月前
|
JSON JavaScript 前端开发
如何在 Postman 中发送 JSON 数据
我们将深入探讨使用 Postman 发送 JSON 数据这一主题,Postman 是一款强大的 API 测试和开发工具。无论您是经验丰富的开发人员还是新手,掌握这项技能对于高效的 API 测试和开发都至关重要。
|
8月前
|
搜索推荐 数据挖掘 API
淘宝商品描述 API 接口的开发、应用与收益
淘宝商品描述API接口是淘宝开放平台提供的服务,允许开发者编程获取商品详情,如标题、价格、图片等。通过注册账号、申请权限并调用API,可构建比价工具、推荐系统、自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。该接口为电商从业者提供了强大的数据支持和创新机会。
236 22
|
XML 存储 JavaScript
在 Java 中如何将 ArrayList 转换为 XML
【8月更文挑战第23天】
279 3
|
12月前
|
存储 安全 Java
shiro学习二:shiro的加密认证详解,加盐与不加盐两个版本。
这篇文章详细介绍了Apache Shiro安全框架中密码的加密认证机制,包括不加盐和加盐两种加密方式的实现和测试。
677 0
|
前端开发 安全 搜索推荐
【专栏】ngrok` 是一款让本地服务器暴露到公网的工具,提供外网访问、临时公网地址、安全隧道及实时更新功能
`【4月更文挑战第29天】ngrok` 是一款让本地服务器暴露到公网的工具,提供外网访问、临时公网地址、安全隧道及实时更新功能。使用简单,包括下载客户端、注册认证、启动本地服务和执行命令。在前端开发中,ngrok 用于本地开发调试、跨设备测试、前后端联调、演示分享和应急处理。它提高了开发效率,简化网络环境和部署问题。无论是移动应用测试还是团队协作,ngrok 都能发挥关键作用,是前端开发者必备神器。尝试使用 ngrok,提升你的开发体验。
822 3
|
Java 应用服务中间件 Windows
2022年最新最详细的tomcat安装教程和常见问的解决
这篇文章提供了2022年最新最详细的Tomcat安装教程,包括离线安装包的获取、官网下载步骤、JDK版本检查、环境变量配置,以及解决安装过程中可能遇到的常见问题,如乱码等。
2022年最新最详细的tomcat安装教程和常见问的解决