MybatisPlus实现分页效果并解决can‘t found IPage for args!错误

news2024/11/17 8:19:36

前言

早就知道MybatisPlus对分页进行了处理,但是一直没有实战用过,用的是自己封装的一个分页组件,虽不说麻烦吧,但是也不是特别简单。

写起来还是比较复杂,但是最近这个组件有了点小小的bug,我决定是时候放弃它了,毅然加入光荣的进化。

然后我就去摸索使用MybatisPlus封装的分页组件,不用不知道,一用吓一跳。不得不说是真香啊!功能强大且使用简单

吹了这么多,下面就简单下如何使用MybatisPlus实现分页效果

简单说明

核心代码其实就这几行:

 Page<ProjectBiddVO> page = new Page<>(pageNo,pageSize);
 IPage<ProjectBiddVO> projectBiddVOS =  projectBiddService.queryListInfo(page,projectBiddvo);

Page就是根据当前页数和显示条数得到的一个结果集

在这里插入图片描述

其中,IPage 是分页的关键,将我们需要分页的条件用Page处理,即可达到分页效果。

可以看到有很多里面方法

在这里插入图片描述

代码实现

实现起来特别简单,两行代码即可

两个参数pageNo和pageSize,分别是limit的两个参数,对应当前页和每页条数

下面是相关的代码,供大家参考:

controller

这样写有一个问题,就是如果不传pageNo和pageSize,会空指针报错

在controller中前两个参数是必传的,一般后面那个参数是实体,然后将pageNo和pageSize转换为IPage对象,后面只需要传IPage参数和业务参数了,如果只写实现分页,只传IPage就够了。

 @ApiOperation(value = "招投标项目-自定义列表查询", notes = "招投标项目-自定义列表查询")
    @GetMapping(value = "/queryListInfo")
    public Result<?> queryListInfo(Integer pageNo,Integer pageSize,ProjectBiddVO projectBiddvo) {
        Page<ProjectBiddVO> page = new Page<>(pageNo,pageSize);
        IPage<ProjectBiddVO> projectBiddVOS =  projectBiddService.queryListInfo(page,projectBiddvo);
        return Result.OK(projectBiddVOS);
    }

接口测试:

在这里插入图片描述

想要优化这个问题,也很简单,可以给这两个参数默认值,防止空指针

也可以通过if判断参数是否为空,是空的话赋值

这里我选择前者,因为我觉得更简单

 @ApiOperation(value = "招投标项目-自定义列表查询", notes = "招投标项目-自定义列表查询")
    @GetMapping(value = "/queryListInfo")
    public Result<?> queryListInfo(
            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
            ProjectBiddVO projectBiddvo) {
        Page<ProjectBiddVO> page = new Page<>(pageNo,pageSize);
        IPage<ProjectBiddVO> projectBiddVOS =  projectBiddService.queryListInfo(page,projectBiddvo);
        return Result.OK(projectBiddVOS);
    }

再来运行一下吧,这次就算不传参,也是不会报错的

在这里插入图片描述

不传当前页数默认就是指定的默认值喽,传的话就按照传的值去分页

通过日志可以发现,其实也是先去count了一下总条数,再进行分页处理的

在这里插入图片描述

service

  IPage<ProjectBiddVO> queryListInfo(Page<ProjectBiddVO> page, ProjectBiddVO projectBiddVO);

serviceImpl

public IPage<ProjectBiddVO> queryListInfo(Page<ProjectBiddVO> page, ProjectBiddVO projectBiddVO) {
   return projectBiddMapper.queryListInfo(page,projectBiddVO);
}

mapper(dao)

    IPage<ProjectBiddVO> queryListInfo(Page<ProjectBiddVO> page,@Param("projectBiddVO") ProjectBiddVO projectBiddVO);

mapper(dao).xml

关于xml文件,不用我们手动指定limit的条件了,改怎么写就怎么写就好,MybatisPlus会根据我们的sql查询结果进行分页处理

例如我写的是:

  select
        id,
        province,
        city,
        county,
        concat(province,city,county) as area,
        business_code_dic,
        section_status_dic,
        project_bidd_code,
        project_bidd_name,
        deposit_amount,
        bidder,
        open_bidd_time,
        margins_End_time,
        del_flag,
        remark
        from
        esgs_project_bidd
        <where>
            del_flag = 0 and open_bidd_time &gt; now() and section_status_dic=0
            <if test="projectBiddVO.projectBiddName!=null and projectBiddVO.projectBiddName!=''">
                and project_bidd_name=#{projectBiddVO.projectBiddName}
            </if>
            <if test="projectBiddVO.projectBiddCode!=null and projectBiddVO.projectBiddCode!=''">
                and project_bidd_code=#{projectBiddVO.projectBiddCode}
            </if>
            <if test="projectBiddVO.bidder!=null and projectBiddVO.bidder!=''">
                and bidder=#{projectBiddVO.bidder}
            </if>
            <if test="projectBiddVO.openBiddStartTime != null and projectBiddVO.openBiddStartTime != ''">
                and open_bidd_time &gt; #{projectBiddVO.openBiddStartTime}
            </if>
            <if test="projectBiddVO.openBiddStopTime != null and projectBiddVO.openBiddStopTime != ''">
                and open_bidd_time &lt; #{projectBiddVO.openBiddStopTime}
            </if>
        </where>
        <if test="projectBiddVO.area!=null and projectBiddVO.area!=''">
            having area like concat(#{projectBiddVO.area}, '%')
        </if>
    </select>

解决报错

如果遇到下面啊这个报错信息:

com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can’t found IPage for args!

在这里插入图片描述

在这里插入图片描述

出现这个错误大概率是因为:

我们想要使用分页,且把返回值定义成了IPage ,但是没有把page对象传入到mapper中。且要把这个page放到第一个参数。

错误演示:

在这里插入图片描述

正确演示:

在这里插入图片描述

总结

使用起来简单且强大,真香!

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

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

相关文章

公网连接内网工具推荐(还在为局域网联机发愁?)

一、FastNat可为您解决的问题1.没有公网服务器&#xff0c;需要发布本地的站点或网络程序到公网上&#xff0c;供他人访问&#xff1b;此项功能大大方面开发人员进行远程调试&#xff0c;微信小程序等开发工作进行。2.需要远程到在其他网络中的设备&#xff0c;但两处的网络不通…

安装ENVI Py for ArcGIS

目录 软件版本 配置环境 在cmd命令行中输入 启动ArcGIS Pro&#xff0c;点击Start with another template。 在刚才的路径中找到文件ENVIPyManagement.aptx&#xff0c;点击OK。 软件版本 ArcGIS Pro 3.0.2 ENVI 5.6 其他版本请参考官方帮助文档&#xff0c;方法类似。 …

五、HTML之表单

文章目录一、表单的作用1.1 常用控件1.2 宽高自适应1.3 窗口自适应1.4 伪元素选择器1.5 浮动高度塌陷问题1.6 左侧一栏为200px余下的右边栏占余下屏幕一、表单的作用 表单用来收集用户的信息。 语法&#xff1a; <form action "提交地址" method"提交方法…

3.3 ISIS引入路由

实验目的掌握IS-IS引入直连路由的方法掌握IS-IS引入静态路由的方法实验拓扑IS-IS引入路由的实验拓扑如图3-2所示: 图3-2:IS-IS引入路由 实验步骤IP地址的配置R1的配置 <Huawei>system-view [Huawei]undo info-center enable

【实战场景一】设计一个分布式环境下全局唯一的信号器

前面&#xff0c;我们罗列了一些面试时可能会到的一些技术上的问题。但都是基于理论&#xff0c;也就是外面所说的八股文。应付一些基础的或者中级的开发岗位来说&#xff0c;是没什么问题的&#xff0c;但如果想拿高薪&#xff0c;或者升职的话&#xff0c;仅靠八股文是仅仅不…

2022年直播电商成交额,更是达到了24816亿元的成交额

近年来移动网络覆盖率、网速提升&#xff0c;直播行业不在是陌生的行业&#xff0c;直播也诞生了繁多的领域&#xff0c;游戏直播、户外直播等&#xff0c;当然还有今天的主题“直播带货”。直播带货是线上销售模式的一种&#xff0c;由衷是为了更好的把商品展示给用户观看&…

【Redis】Redis 常用数据类型操作 ② ( 数据库操作 | 切换数据库 | 查询当前数据库键个数 | 清空当前数据库 | 清空所有数据库 )

文章目录一、Redis 数据库操作1、切换数据库2、查询当前数据库键个数3、清空当前数据库4、清空所有数据库一、Redis 数据库操作 在之前的博客 【Redis】Redis 数据库 安装、配置、访问 ( Redis 简介 | 下载 Redis 安装包 | 安装 Redis 数据库 | 命令行访问 Redis | 使用可视化工…

保姆级Vue3+Vite项目实战正则在线校验工具

写在前面注&#xff1a;本文首发掘金签约专栏&#xff0c;此为文章同步&#xff01;本文为 Vue3Vite 项目实战系列教程文章第五篇&#xff0c;系列文章建议从头观看效果更佳&#xff0c;大家可关注专栏防走失&#xff01;点个赞再看有助于全文完整阅读&#xff01;此系列文章主…

为什么PMP的含金量会被质疑呢?(含pmp资料)

1、考的人越来越多&#xff0c;物以稀为贵&#xff0c;且PMP也不是非考不可&#xff0c;也不是项目管理的门槛证书&#xff1b; 2、PMP的通过率是越来越高&#xff0c;就有种我上我也行的错觉&#xff0c;随便一考就考过了&#xff0c;还谈什么含金量&#xff1f; 3、PMP考了不…

Windows中MySQL 8.x版本忘记密码如何重设

Windows中MySQL 8.x版本忘记密码如何重置 文章目录Windows中MySQL 8.x版本忘记密码如何重置一、前言二、重置密码操作1、停止MySQL服务2、以安全模式启动MySQL服务3、无密码登录mysql4、重置登录密码5、验证密码是否重置成功三、最后我想说一、前言 好久之前在电脑下载的MySQL…

【Linux】初学Linux你需要掌握这些基本指令(二)

目录 1.man指令 2.cp指令 3.mv指令 4.tree指令 5.echo指令 6.more指令 7.less指令&#xff08;重要&#xff09; 8.head与tail指令 9.date指令 显示时间常用参数&#xff1a; 设置时间常用参数&#xff1a; 10.cal指令 11.find & whereis & which指令 …

为知笔记 wiz 支持实时预览的md markdown编辑器 对比 typora Vditor

1.为什么退回到为知笔记老版本 升级到为知笔记最新版(wiznote X)已经快一年了(最近编辑文档不多,所以一直也将就使用,并且告诉自己习惯了新版就会更舒服),最近还是退回到老版本了. (1)新版本没有了顶部编辑菜单,全靠号提示,感觉不方便.好像在用命令行编辑文档.完全不喜欢这种…

OpenCV Canny边缘检测

本文是OpenCV图像视觉入门之路的第13篇文章&#xff0c;本文详细的介绍了Canny边缘检测算子的各种操作&#xff0c;例如&#xff1a;Canny算子进行边缘检测等操作。 Canny函数是OpenCV中用于执行边缘检测的函数之一&#xff0c;其参数包括&#xff1a; threshold1&#xff1a;…

【NVMEM子系统】一、Efuse介绍及安全启动浅析

个人主页&#xff1a;董哥聊技术我是董哥&#xff0c;嵌入式领域新星创作者创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01;文章目录1、Efuse是什么2、OTP是什么3、什么是Secure Boot4、CPU内部安全机制4.1 bootROM4.2 iRAM4.3 eFUSE4.5 …

高通开发系列 - USB不能正常工作

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回高通开发系列 - 总目录 目录 USB不能正常工作问题概述问题分析USB不能正常工作 问题概述 升级完linux内核后,msm-4.9内核中usb、adb…

[22] Rodin: A Generative Model for Sculpting 3D Digital Avatars Using Diffusion

paper: https://arxiv.org/abs/2212.06135 总结&#xff1a;提出一种基于扩散模型和tri-plain features的3D虚拟人像生成方法。该方法包含多个模型&#xff0c;需要多次训练&#xff1a; 使用Blender synthetic pipeline&#xff08;Fake it untill you make it&#xff09;生…

LeetCode-257. 二叉树的所有路径

目录题目分析递归法题目来源 257. 二叉树的所有路径 题目分析 前序遍历以及回溯的过程如图&#xff1a; 递归法 1.递归函数参数以及返回值 要传入根节点&#xff0c;记录每一条路径的path&#xff0c;和存放结果集的result&#xff0c;这里递归不需要返回值&#xff0c;代…

时间序列预测--基于CNN的股价预测(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 时间序列预测有很多方法&#xff0c;如传统的时序建模方法ARIMA、周期因子法、深度学习网络等&#xff0c;本次实验采用最简单的…

趣味三角——第11章——一个著名的公式

目录 1. 著名无限积公式简述及证明 2. Jules Lissajous 和他的图形(Jules Lissajous and His Figures) 11章 一个著名的公式 The prototype of all infinite processes is repetition. . . . Our very concept of the infinite derives from the notion that what has bee…

umap 速度测试

今天终于把umap的速度给测了一下&#xff0c;结果如下 预处理文件&#xff08;83万的数据量&#xff09; # import scanpy as sc # adatasc.read("/DATA1/zhangjingxiao/yxk/dataset/FullMouseBrain/FullMouseBrain_raw.h5ad") # print(adata) # sc.pp.normalize_…