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

 更新时间:2023年02月17日 09:40:05   作者:小花皮猪  
这篇文章主要介绍了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查询结果进行分页处理

例如我写的是:

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

错误演示:

在这里插入图片描述

正确演示:

在这里插入图片描述

总结

到此这篇关于MybatisPlus实现分页效果并解决错误:cant found IPage for args!的文章就介绍到这了,更多相关MybatisPlus实现分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 完美解决Java中的线程安全问题

    完美解决Java中的线程安全问题

    下面小编就为大家带来一篇完美解决Java中的线程安全问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java实现扑克牌洗牌和发牌

    Java实现扑克牌洗牌和发牌

    这篇文章主要为大家详细介绍了Java实现扑克牌洗牌和发牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • SpringCloud Feign传递HttpServletRequest对象流程

    SpringCloud Feign传递HttpServletRequest对象流程

    HttpServletRequest接口的对象代表客户端的请求,当客户端通过HTTP协议访问Tomcat服务器时,HTTP请求中的所有信息都封装在HttpServletRequest接口的对象中,这篇文章介绍了Feign传递HttpServletRequest对象的流程,感兴趣的同学可以参考下文
    2023-05-05
  • mybatis输入映射和输出映射实例详解

    mybatis输入映射和输出映射实例详解

    这篇文章主要介绍了mybatis输入映射和输出映射,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • struts2数据处理_动力节点Java学院整理

    struts2数据处理_动力节点Java学院整理

    Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理。下面通过本文给大家分享struts2数据处理的相关知识,感兴趣的朋友参考下吧
    2017-09-09
  • idea中如何配置tomcat

    idea中如何配置tomcat

    这篇文章主要介绍了idea中如何配置tomcat问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 深入浅析jcmd:JDK14中的调试神器

    深入浅析jcmd:JDK14中的调试神器

    这篇文章主要介绍了jcmd:JDK14中的调试神器,本文给大家提到了jcmd的语法,通过实例列举的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot 整合 RabbitMQ 的使用方式(代码示例)

    SpringBoot 整合 RabbitMQ 的使用方式(代码示例)

    本文详细介绍了使用RabbitTemplate进行消息传递的几种模式,包括点对点通信、发布/订阅模式、工作队列模式、路由模式和主题模式,每种模式都通过代码示例展示了生产者和消费者的实现,帮助开发者理解和运用RabbitMQ进行高效的消息处理
    2024-10-10
  • 关于Java集合框架Collection接口详解

    关于Java集合框架Collection接口详解

    这篇文章主要介绍了关于Java集合框架Collection接口详解,Collection接口是Java集合框架中的基础接口,定义了一些基本的集合操作,包括添加元素、删除元素、遍历集合等,需要的朋友可以参考下
    2023-05-05
  • Java日期时间与正则表达式超详细整理(适合新手入门)

    Java日期时间与正则表达式超详细整理(适合新手入门)

    如果使用得当,正则表达式是匹配各种模式的强大工具,下面这篇文章主要给大家介绍了关于Java日期时间与正则表达式超详细整理的相关资料,本文非常适合新手入门,需要的朋友可以参考下
    2023-04-04

最新评论