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

MybatisPlus实现分页效果并解决错误:cant found IPage for args!

前言

早就知道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查询结果进行分页处理

例如我写的是:

  selectid,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,remarkfromesgs_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放到第一个参数。

错误演示:

在这里插入图片描述

正确演示:

在这里插入图片描述

总结

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

相关文章:

MybatisPlus实现分页效果并解决错误:cant found IPage for args!

前言 早就知道MybatisPlus对分页进行了处理&#xff0c;但是一直没有实战用过&#xff0c;用的是自己封装的一个分页组件&#xff0c;虽不说麻烦吧&#xff0c;但是也不是特别简单。 写起来还是比较复杂&#xff0c;但是最近这个组件有了点小小的bug&#xff0c;我决定是时候…...

C语言赋值(关系)运算符和逗号运算符

一.赋值&#xff08;关系&#xff09;运算符 1.关系运算符 高优先级组 < 左边值小于右边值,则返回1。否则返回0 < 左边值小于等于右边值,则返回1。否则返回0 > 左边值大于右边值,则返回1。否则返回0 > 左边值大于等于右边值,则返回1。否则返回0 低优先级组…...

几种在Linux/window下查询外网IP的办法。

hello world curl ifconfig.me/ip如下图 1. 纯文本 https://ifconfig.me/ip https://ipinfo.io/ip 或 https://ipecho.net/ip 或 https://ipecho.net/plain https://www.trackip.net/ip https://icanhazip.com 2. JSON格式 https://ifconfig.me/all.json https://ipi…...

【nodejs-05】黑马nodejs学习笔记05-数据库基本操作01

文章目录3.MySQL的基本使用3.1 使用 MySQL Workbench 管理数据库3.2 使用 SQL 管理数据库3.3 SQL 的 SELECT 语句3.4 SQL 的 INSERT INTO 语句3.5 SQL 的 UPDATE 语句3.6 SQL 的 DELETE 语句3.7 SQL 的 WHERE 子句3.8 SQL 的 AND 和 OR 运算符3.9 SQL 的 ORDER BY 子句3.10 SQL…...

零基础、学历无优势、逻辑能力一般”,能转行做程序员吗?

此前&#xff0c;拉勾数据研究院对程序员群体做了一次深入调查&#xff0c;并发布了《2022程序员群体职场洞察报告》&#xff0c;报告显示&#xff0c;“高薪”依然是程序员的职业标签之一。 在调查的程序员群体中&#xff0c;年薪在10-30万元之间的人数占比为66.7%&#xff0…...

第五章.与学习相关技巧—Batch Normalization

第五章.与学习相关技巧 5.3 Batch Normalization Batch Norm以进行学习时的mini_batch为单位&#xff0c;按mini_batch进行正则化&#xff0c;具体而言&#xff0c;就是进行使数据分布的均值为0&#xff0c;方差为1的正则化。Batch Norm是调整各层激活值的分布使其拥有适当的广…...

Zynq非Video Mixer方案实现视频叠加输出,无需SDK配置,提供工程源码和技术支持

目录1、前言2、Video Mixer的不便之处3、FDMA取代Video Mixer实现视频叠加输出4、Vivado工程详解5、上板调试验证并演示6、福利&#xff1a;工程代码的获取1、前言 关于Zynq使用Video Mixer方案实现视频叠加输出方案请参考点击查看&#xff1a;Video Mixer方案 对于Zynq和Micr…...

从零实现Web服务器(二): 线程池以及线程池的作用,Get和Post的区别,项目中如何编写数据库连接池,定时器优化非活跃连接

文章目录一、线程池以及线程池的作用二、手写线程池三、Get和Post的区别四、如何编写数据库连接池五、定时器优化非活跃连接5.1. 基于排序链表实现。5.2. 基于小根堆实现。5.3. 基于红黑树实现。5.4. 基于时间轮实现。5.4.1 单时间轮实现5.4.2 多时间轮实现一、线程池以及线程池…...

为什么伟大的产品只专注做一件事

uber 不允许你预订出租车。亚马逊一开始只是卖书。谷歌只是一个搜索引擎。麦当劳没有餐具。不知为什么&#xff0c;我们仍然相信一个产品要想成功&#xff0c;它必须做很多事情。这通常发生在两种情况下&#xff1a;当新产品试图让市场相信它们是值得的&#xff0c;或者当公司提…...

pycharm远程连接服务器,并单步调试服务器上的代码

每天都有不同的朋友来Push我 那如果比较健忘的话&#xff0c;为啥不问一下chatGPT呢 问题的缘由在我想在本地单步调试代码。。。 我的代码完全在云端服务器的&#xff0c;还有数据集都是&#xff0c;但实际上本地代码可以通过pycharm给他传上去。 但是在后面配置的时候需要两…...

JVM05 方法区

Person&#xff1a;存放在元空间&#xff0c;也可以说方法区 person&#xff1a;存放在Java栈的局部变量表中 new Person()&#xff1a;存放在Java堆中 1.方法区的理解 方法区主要存放的是 Class&#xff0c;而堆中主要存放的是 实例化的对象 方法区&#xff08;Method Area…...

盘点3个.Net开发的WMS仓库管理系统

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 仓库管理系统在企业中&#xff0c;重要性越来越高&#xff0c;不仅可以提高效率&#xff0c;还能降低企业的压力&#xff0c;企业通过协调和优化资源使用和物料流动&#xff0c;能极大程度地提升了管理效率&…...

Linux下Java项目开机自动启动

Linux下Java项目开机自动启动1、在Linux上设置开机启动Java程序&#xff0c;例如&#xff1a;test.jar在Linux上启动Java程序的命令:2、可以将程序启动的指令做成一个shell脚本&#xff0c;简单的做法创建一个test.sh文件&#xff0c;内容如下&#xff1a;3、最重要的一步就是修…...

基于SpringBoot的智慧社区网站

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…...

数据分析与SAS学习笔记3

SAS在最新的展示图&#xff0c;表现力比较丰富。 SAS的处理流程&#xff1a; 数据步 过程步&#xff1a; ETL是数据分析非常重要的步骤。70%-90%花在收集数据以及整理数据&#xff0c;数据分析数据的时间不是很多的。 一个完整的数据步和过程步&#xff1a; 数据步基本语句总…...

天干地支蓝桥杯国赛

题目 分析 蓝桥杯国赛2020简单模拟题&#xff0c;你敢信&#xff0c;就是弄两个字符串数组。重点在于知道0000年是从哪个天干和地支开始的。 代码 #include <iostream> using namespace std;int year;int main() {cin >> year;string tiangan[10] {"geng&…...

Source lnsight工具的简单使用

多文件编程推荐用Source lnsight工具来进行编写 一、Source lnsight工具的简单使用 1、在桌面上新建一个文件夹factory&#xff0c;在文件夹里新建一个cat.c文件和si文件夹 2、打开Source lnsight工具&#xff0c;点击上方Project--->New Project 3、把文件夹factory中si文…...

100个变态的软件测试面试题及答案!——看完变态面试官对你竖起大拇指!

【纯干货&#xff01;&#xff01;&#xff01;】花费了整整3天&#xff0c;整理出来的全网最实用软件测试面试大全&#xff0c;一共30道题目答案的纯干货&#xff0c;希望大家多多支持&#xff0c;建议 点赞&#xff01;&#xff01;收藏&#xff01;&#xff01;长文警告&…...

Windows保护机制GS:原理及SEH异常处理突破

前言 本次文章只用于技术讨论&#xff0c;学习&#xff0c;切勿用于非法用途&#xff0c;用于非法用途与本人无关&#xff01; 所有环境均为本地环境分析&#xff0c;且在本机进行学习。 GS机制并没有对SEH提供保护&#xff0c;换句话说我们可以通过攻击程序的异常处理达到绕…...

大彩 串口屏

资料下载 视频 屏幕程序创建 创建 主界面设置 实现按钮和文本的添加&#xff0c;实现画面的切换 下面注释4有点问题&#xff0c;切换画面还是会下传指令集&#xff0c;只是无法在软件中进行指令集的设置了 按钮界面 首先第一步同上添加背景图片&#xff0c;然后添加…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...