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

news2025/1/11 23:52:33

前言

早就知道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/349869.html

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

相关文章

2023年进入互联网行业好找工作吗?

俗话说&#xff1a;选择大于努力。年后求职小高峰&#xff0c;大家在找工作的时候选择肯定也多了。 说真&#xff0c;不是人人都有铁饭&#xff0c;普通家庭的孩子想要在2023年进入互联网行业去找工作可能吗&#xff1f; 01 有一点大家要清楚&#xff0c;2022年是进入过一个寒…

【Linux】变量定义规则、shell 格式、空格注意事项汇总

文章目录1. 空格问题号用于赋值用于比较2. 变量2.1 变量命名的格式要求2.2、shell变量中的注意事项2.3、变量的使用方法2.4、变量的类型&#xff08;1&#xff09;自定义变量&#xff08;2&#xff09;环境变量&#xff08;3&#xff09;位置变量&#xff08;4&#xff09;预定…

【高并发-用户中心】读多写少的系统如何优化

本博客纯属个人总结&#xff0c;非原创。喜欢技术交流的&#xff0c;可关注博主&#xff0c;武汉有后端开发群&#xff0c;可支持内推&#xff0c;了解武汉行情等。 如何对读多写少的系统进行高并发优化&#xff1f; 比如&#xff1a;用户中心是一个读多写少的系统&#xff0…

Linux定时备份MySql数据库

一、创建文件 cd / mkdir mysqlbackup vi mysqlbackup.sh然后将下面的代码更改后复制上去即可。 #!/bin/bash mysqldump -uroot -ppassword database > /mysqlbackup/database__$(date %Y%m%d_%H%M%S).sqlpassword指的是MySql的密码&#xff0c;database指的是所要备份的…

【C++算法】dfs深度优先搜索(上) ——【全面深度剖析+经典例题展示】

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 &#x1f4d5; ps:七八天没更新了欸&#xff0c;这几天刚搞完元宇宙&#xff0c;上午一直练&#x1f697;&#xff0c;下午背四级单词和刷题来着&#xff0c;还在忙一些学弟…

leaflet: 禁止拖拽、禁止zoom(双击、滚轮、键盘)、禁止tap(076)

第076个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中设定各种禁止状态,这里设置了禁止拖拽、禁止zoom(双击、滚轮、键盘)、禁止tap。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共73行)相关A…

linux高级命令之多进程的使用

多进程的使用学习目标能够使用多进程完成多任务1 导入进程包#导入进程包import multiprocessing2. Process进程类的说明Process([group [, target [, name [, args [, kwargs]]]]])group&#xff1a;指定进程组&#xff0c;目前只能使用Nonetarget&#xff1a;执行的目标任务名…

电商导购CPS,京东联盟如何跟单实现用户和订单绑定

前言 大家好&#xff0c;我是小悟 做过自媒体的小伙伴都知道&#xff0c;不管是发图文还是发短视频&#xff0c;直播也好&#xff0c;可以带货。在你的内容里面挂上商品&#xff0c;你自己都不需要囤货&#xff0c;如果用户通过这个商品下单成交了&#xff0c;自媒体平台就会…

【刷题笔记】--搜索二维矩阵 II

题目&#xff1a; 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16…

设计师都在看的全球设计网站,你居然还不知道!

设计师需要拥有无限的创意和熟练的技巧&#xff0c;并且对行业的前景和客户的心理有一定的了解。要能达到“陌生化”之前&#xff0c;肯定是有知识储备&#xff0c;专业能力的前提要求&#xff0c;以及创新能力。 今天为大家整理了多个优秀全球设计网站&#xff0c;这些博客内…

大家都在聊的自动化办公到底是什么?

自动化办公无非是excel、ppt、word、邮件、文件处理、数据分析处理、爬虫这些&#xff0c;下面就详细介绍一下&#xff01;文章最后分享了很不错的python学习教程&#xff0c;适合零基础初学的小伙伴&#xff0c;希望可以对你有所帮助&#xff01;&#xff01; excel自动化 我…

linux基本功系列之grep命令

文章目录前言一. grep命令介绍二. 语法格式及常用选项三. 参考案例3.1 搜索文件中以root开头的文件3.2 搜索文件中出现的root3.3 搜索除了匹配行之外的行3.4 匹配的部分使用颜色显示3.5 只输出文件中匹配到的地方3.6 输出包含匹配字符串的行&#xff0c;并显示所在的行数3.7 统…

Unity CircleLayoutGroup 如何实现一个圆形自动布局组件

文章目录简介实现原理Editor 编辑器简介 Unity中提供了三种类型的自动布局组件&#xff0c;分别是Grid Layou Group、Horizontal Layout Group、Vertical Layout Group&#xff0c;本文自定义了一个圆形的自动布局组件Circle Layout Group&#xff0c;如图所示&#xff1a; Ra…

Maven的安装步骤(保姆级安装教程)

一、安装本地Maven 选择你需要的maven版本下载&#xff1a;官网下载传送门 我使用的是3.6.1版本&#xff1a;maven-3.6.1-bin.zip 二、安装 把下载好的maven压缩包解压到一个没有中文&#xff0c;空格或其他特殊字符的文件夹&#xff0c;如&#xff1a; 三、配置环境变量…

Python 编程必备:盘点nginx和gunicorn的几大用法,建议收藏

程序员是新兴技术工种中比较高薪的一个&#xff0c;在互联网公司&#xff0c;程序员往往与秃头&#xff0c;压力大&#xff0c;找不到女朋友等等挂钩。 最近&#xff0c;最新技能类榜单出炉&#xff0c;这是一个关于程序员自己给自己贴的几个标签。 其中&#xff0c;不难看出…

美国CPC认证是什么?儿童玩具亚马逊CPC认证审核有哪些问题?

很多卖家都有遭遇listing下架&#xff0c;被要求提供CPC认证报告。这是因为亚马逊有时会加强对儿童产品的审查。本文带大家对CPC认证进行一个全面了解。什么是CPC认证&#xff1f;CPC认证&#xff0c;全称ChildrensProductCertification.是认可实验室&#xff0c;根据产品不同适…

Hive学习——单机版Hive的安装

目录 一、基本概念 (一)什么是Hive (二)优势和特点 (三)Hive元数据管理 二、Hive环境搭建 1.自动安装脚本 2./opt/soft/hive312/conf目录下创建hive配置文件hive-site.xml 3.拷贝一个jar包到hive下面的lib目录下 4.删除hive的guava&#xff0c;拷贝hadoop下的guava 5…

Java中常见的编码集问题

收录于热门专栏Java基础教程系列&#xff08;进阶篇&#xff09; 一、遇到一个问题 1、读取CSV文件 package com.guor.demo.charset;import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.HashMap; import java.util.L…

Syntax-Aware Aspect-Level Sentiment Classification with PWCN 论文阅读笔记

一、作者 Chen Zhang, Qiuchi Li, and Dawei Song. 2019. Syntax-Aware Aspect-Level Sentiment Classification with Proximity-Weighted Convolution Network. In Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information …

jsp游泳馆门票管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp游泳馆门票管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;…