记一次使用pagehelper的坑(返回的total和size每页条数一致的问题)

这篇具有很好参考价值的文章主要介绍了记一次使用pagehelper的坑(返回的total和size每页条数一致的问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

众所周知,pagehelper使用时应该在dao查询语句的前一句加上PageHelper.startPage,因为startpage是SQL拦截器,拦截它之后的第一个SQL,所以标题的问题由此引出……

原因

PageHelper.startPage使用后会将list隐性的给转换为page类型,如图所示

记一次使用pagehelper的坑(返回的total和size每页条数一致的问题)

万一没转换成Page类型呢?比如在controller层使用该方法去处理Service层的list数据,或者不按照规范未在Mapper语句上一行使用该方法时...

这样就导致了后面在使用pageInfo时的一些问题,比如getTotal时,发现startPage方法转换过的list并不是Page类型,而是普通的list类型,所以在getTotal时相当于直接调用的list.Size()去获取总数,源码如下:
记一次使用pagehelper的坑(返回的total和size每页条数一致的问题)

解决方案

1.第一种解决方案:使用PageHelper.startPage时返回的page类传入PageInfo里,比如

Page page = PageHelper.startPage(页码,页数);
List<T> list = mapper/service/***.get(T);//要分页的list
PageInfo<T> pageInfo = new PageInfo<>(page)//传入page而非list
return pageInfo.getTotal();//返回总条数

2.第二种解决方案:不要在非Mapper返回的list上做处理,startPage只有在mapper语句的上一行添加才能隐形的把list转换为page类型,其他比如service层返回的list均不能转换为page。文章来源地址https://www.toymoban.com/news/detail-617817.html

到了这里,关于记一次使用pagehelper的坑(返回的total和size每页条数一致的问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次排查:接口返回值写入excel后,从单元格copy出来的数据会带有多重引号的问题

    在项目里刚好有3个服务,同一个网关内层的3个服务,两个php的,一个golang的,为了提高负载以及进行分流,部分客户的接口调用会被网关自动分配到go服务。 恰好为了测试,我写了一个全量用户的生产、测试环境调用接口返回结果进行对比的脚本,于是发现了题中的问题:

    2024年02月05日
    浏览(43)
  • 记一次vs2019给MFC ListControl组件添加变量报错“未能返回新代码元素。可能语法错误。新元素名:x_xxxx”

    因一次项目给ListControl添加变量报错,解决后写下的该博客(查询到好多都是删除ncb文件的,浪费了很多时间)   具体为什么导致的这个情况,我也不太清楚(如果有大佬能科普一下,并告诉根本的解决方案就更好了),不过写代码的,都知道一切能点击的按钮都是对应的函数实现。

    2024年02月08日
    浏览(40)
  • 记一次MOXA串口服务器使用

    AIS船台——天线——AIS基站——网线——交换机——服务器 AIS船台——天线——AIS基站——串口线——串口服务器——网线——交换机——服务器 串口线分为RS-485、RS-422、RS-232,此处以RS-232为例 串口线:一端为RS232连接头,用于连接串口服务器 一端为裸露的电线纤芯头,用

    2024年02月03日
    浏览(85)
  • 记一次在uniapp中使用websocket

    WebSocket是一种在Web应用程序中实现双向通信的技术,它允许服务器和客户端之间实时交换数据。近期在项目中使用websocket的一个过程,以及遇到的一些问题的解决思路。 连接的建立,处理消息的发送,接收 打开报错关闭监听,报错监听。 建立连接,连接已建立时监听WebSoc

    2024年02月01日
    浏览(45)
  • 记一次etcd全局锁使用不当导致的事故

    前两天,现场的同事使用开发的程序测试时,发现日志中报 etcdserver: mvcc: database space exceeded ,导致 etcd 无法连接。很奇怪,我们开发的程序只用到了 etcd 做程序的主备,并没有往 etcd 中写入大量的数据,为什么会造成 etcd 空间不足呢?赶紧叫现场的同事查了下 etcd 存储数据的

    2024年02月11日
    浏览(44)
  • 记一次使用git prune 命令的场景分析

    自动化测试团队在 Jenkins 上配置了用于运行自动化项目的 Job。今天,Job 在执行 git fetch 时报了下面的错误: 自动化团队成员无法解决此问题,于是,我这边帮忙阅读了 Job 的日志,使用 git prune 解决问题;找出了导致此异常场景的原因,并重现场景,让大家了解此场景,避免

    2024年02月03日
    浏览(34)
  • 记录-记一次不规范使用key引发的惨案

    平时在使用v-for的时候,一般会要求传入key,有没有像我一样的小伙伴,为了省心,直接传索引index,貌似也没有遇到过什么问题,直到有一天,我遇到一个这样的需求 在一个下单界面,我需要去商品列表选商品,然后在下单界面遍历显示所选商品,要求后选的排在前面,而

    2023年04月13日
    浏览(87)
  • Unity - 记一次,使用 RenderDoc 调试 渲染 异常 的过程

    2023.05.01 写的记录 先拿到 有问题的 vertex shader, fragment shader 分析 选择:remote 还是 local是关键,因为 会影响 shader 指令的结果 当你打开 rdc 文件的时候, render doc 会提示使用 remote 当前连接的目标设备作为解释执行的主体 local 本地电脑来做为执行主体 如果你的抓帧数据是 移动

    2024年02月12日
    浏览(54)
  • 记一次Eazfuscator.NET 2023.2加密使用学习尝试

    Eazfuscator.NET 是用于.NET平台的工业级混淆器。 Eazfuscator.NET 提供的混淆保护了软件中根深蒂固的知识产权,提高了商业盈利能力,并保持了竞争优势。 Eazfuscator.NET 很简单,就像 1-2-3 一样: 它可以保护您的代码, 而不会破坏它 -  即使在最复杂的情况下  - 我们已经处理了它

    2024年02月11日
    浏览(43)
  • 记一次使用NetworkManager管理Ubuntu网络无效问题分析

    我们都知道CentOS、Redhat系列网络配置比较连贯,要么在 /etc/sysconfig/network-scripts/ifcfg-网络设备名 ,文件中编辑后,重启网络服务;要么使用 nmtui 或者 nmcli 进行配置。但是, Ubuntu变动就比较大: 早期 版本的Ubuntu,配置网络在 /etc/network/interfaces 下,后面这个文件就被遗弃了,

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包