mybatis PageHelper的坑---记录
记录下,自己新开了一个kotlin的项目从而替换java项目,同时升级了部分组件,包括pageHelper,以往代码里有动态sql的配置
//通过不为null的属性查找数据
val tmpResult: List<Map<String?, Any?>> = sqlSessionTemplate?.selectList("commonSql.queryByNotNullProperties",dynamicDbOperation, RowBounds((curPage - 1) * pageSize, pageSize))
然而在实际查询的时候执行了
select count(0) from table where nama = key;
通过sql日志查看,返回count1,total1,但是就是没有执行查询语句导致获取到的数据一直为空。
百度搜了后说是分页的问题,将RowBounds删了后确实可以了,但是这就无法动态化了(某些原因)。追溯源码查看问题
public Page getPage(Object parameterObject, RowBounds rowBounds) {Page page = PageHelper.getLocalPage();if (page == null) {//如果不是默认对象就进行分页操作,我这边无论是哪个版本应该都会进入该分支if (rowBounds != RowBounds.DEFAULT) {...} else if (parameterObject instanceof IPage || supportMethodsArguments) {...}if (page == null) {return null;}PageHelper.setLocalPage(page);}...return page;}
上文主要是进入的分支创建对象,明白为啥有些操作在不同版本不一致,下文
AbstractHelperDialect.java
5.3.3@Overridepublic boolean afterCount(long count, Object parameterObject, RowBounds rowBounds) {Page page = getLocalPage();page.setTotal(count);if (rowBounds instanceof PageRowBounds) {((PageRowBounds) rowBounds).setTotal(count);}//pageSize < 0 的时候,不执行分页查询//pageSize = 0 的时候,还需要执行后续查询,但是不会分页if (page.getPageSizeZero() != null) {//PageSizeZero=false&&pageSize<=0if (!page.getPageSizeZero() && page.getPageSize() <= 0) {return false;}//PageSizeZero=true&&pageSize<0 返回 false,只有>=0才需要执行后续的else if (page.getPageSizeZero() && page.getPageSize() < 0) {return false;}}//页码>0 && 开始行数<总行数即可,不需要考虑 pageSize(上面的 if 已经处理不符合要求的值了)return page.getPageNum() > 0 && count > page.getStartRow();}
----------------------------------
5.1.2public boolean afterCount(long count, Object parameterObject, RowBounds rowBounds) {Page page = this.getLocalPage();page.setTotal(count);if (rowBounds instanceof PageRowBounds) {((PageRowBounds)rowBounds).setTotal(count);}if (page.getPageSize() < 0) {return false;} else {return count > 0L;}}
从上面两个版本对比就知道了,一个需要pageNum从1开始,一个不care页码…踩了个小坑…
整改方法就是新增配置:
offsetAsPageNum=true //但我这里默认是true…
val tmpResult: List<Map<String?, Any?>> = sqlSessionTemplate?.selectList("commonSql.queryByNotNullProperties",dynamicDbOperation, RowBounds(curPage, pageSize)) //offset参数做成pageNum且pageNum从1开始
搜索许久就说了pageSize和pageNum的问题,没说0和1,追踪源码才知道如何修改。。。
果然啊 看源码能解决大部分问题。
相关文章:
mybatis PageHelper的坑---记录
记录下,自己新开了一个kotlin的项目从而替换java项目,同时升级了部分组件,包括pageHelper,以往代码里有动态sql的配置 //通过不为null的属性查找数据 val tmpResult: List<Map<String?, Any?>> sqlSessionTemplat…...
uniapp微信小程序下载文件并打开
uni.downloadFile({url: 下载的地址,success(res) {console.log(res)if (res.statusCode 200) {console.log(下载成功);var filePath encodeURI(res.tempFilePath);uni.openDocument({filePath: filePath,fileType: "xlsx",showMenu: true,success: function(res) …...
安卓Intent打开系统进程汇总
1:拨打电话 val uri Uri.parse("tel:10086")val intent Intent(Intent.ACTION_DIAL,uri)startActivity(intent) 2:发送短信 val smsUri Uri.parse("smsto:10086")val intent1 Intent(Intent.ACTION_SENDTO,smsUri)intent1.putE…...
python学习(廖雪峰的官方网站部分,自学笔记)
python学习 廖雪峰的官方网站强烈推荐 字符串 Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符 ord( )先当与把字符转成整形,chr( ) 把编码转化成相应的字符 有些时候,字符串里面的%是一个普通字符怎么办&…...
python题-检查该字符串的括号是否成对出现
给定一个字符串,里边可能包含“()”、"{}"两种括号,请编写程序检查该字符串的括号是否成对出现。 输出: true:代表括号成对出现并且嵌套正确,或字符串无括号字符。 false:未正确使用括号字符。 …...
3ds Max建模教程:模拟布料拖拽撕裂和用剑撕裂两种效果
推荐: NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 拖拽撕布 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 在透视视口中创建平面。保持其长度 后座和宽度后座为 100。 创建平面 步骤 3 转到助手>假人并在 飞机的两侧。 助手>假人 步骤 4 选…...
数据可视化(4)散点图及面积图
1.简单散点图 #散点图 #scatter(x,y) x数据,y数据 x[i for i in range(10)] y[random.randint(1,10) for i in range(10)] plt.scatter(x,y) plt.show()2.散点图分析 #分析广告支出与销售收入相关性 dfcarpd.read_excel(广告支出.xlsx) dfdatapd.read_excel(销售…...
Redis - 数据过期策略
Redis提供了两种数据过期策略 惰性删除 和 定期删除 惰性删除 当某个key过期时,不马上删除,而是在调用时,再判断它是否过期,如果过期再删除它 优点 : 对CPU友好,对于很多用不到的key,不用浪费…...
英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
对于目标检测算法改进,但是应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的SCI论文,并对…...
【Liux下6818开发板(ARM)】实现简易相册
(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…...
Kubernetes(K8s)从入门到精通系列之六:K8s的基本概念和术语之存储类
Kubernetes K8s从入门到精通系列之六:K8s的基本概念和术语之存储类 一、存储类二、emptyDir三、hostPath四、公有云Volume五、其他类型的Volume六、动态存储管理一、存储类 存储类的资源对象主要包括: VolumePersistent VolumePVCStorageClass基础的存储类资源对象——Volum…...
Spark-统一内存模型
总结: Spark的内存模型分为4部分,分别是存储内存,计算内存,其他内存,预留内存; 其中存储内存和计算内存可以动态占用,当己方内存不足对方空余则可占用对方的内存,计算内存被存储内…...
类的继承和super关键字的使用(JAVA)
继承 所有的OOP语言都会有三个特征: 封装(点击可跳转);继承;多态 为什么会有继承呢?可以先看下面的例子: 上面这两个类中的代码很相似因为它们只有最后一个方法不同其它的都相同,这样…...
BGP属性+选路规则
目录 一,BGP的属性—基础属性 1.PrefVal 2.LocPrf 3、优先本地下一跳 (NextHop) 4、AS-PATH 5、起源属性 6、MED -多出口鉴别属性 二,BGP选路规则 三,BGP的社团属性 一,BGP的属性—基础…...
类的实例化
类的实例化 class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;int _day; //这只是函数的一个声明并没有定义 };上面是一个类,我们可以把有花括号括起来的叫做一个域ÿ…...
智能提词器有哪些?了解一下这款提词工具
智能提词器有哪些?使用智能提词器可以帮助你更好地准备和交付演讲、报告或其他提词场合。它可以提高你的效率,节省你的时间,并让你更加自信地与听众沟通。另外,智能提词器还可以提供一些有用的功能,如语音识别、智能建…...
oracle 19c rac环境配置firewalld
rac环境ip地址说明 [rootdb1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.100.19 db1 172.16.100.30 …...
Flutter 之Bloc入门指南实现倒计时功能
Flutter Timer By Bloc 前言Stream.periodic实现倒计时定义Bloc状态定义Bloc事件定义Bloc组件定义View层参考资料前言 使用Bloc开发Flutter的项目,其项目结构都很简单明确,需要创建状态,创建事件,创建bloc,创建对应的View。flutter_timer项目来分析下Bloc的使用方法。 通…...
目标识别数据集互相转换——xml、txt、json数据格式互转
VOC数据格式与YOLO数据格式互转 1.VOC数据格式 VOC(Visual Object Classes)是一个常用的计算机视觉数据集,它主要用于对象检测、分类和分割任务。VOC的标注格式,也被许多其他的数据集采用,因此理解这个数据格式是很重…...
211. 添加与搜索单词 - 数据结构设计---------------字典树
211. 添加与搜索单词 - 数据结构设计 原题链接:完成情况:解题思路:参考代码: 原题链接: 211. 添加与搜索单词 - 数据结构设计 https://leetcode.cn/problems/design-add-and-search-words-data-structure/descriptio…...
Pixel Dream Workshop 对比测试:不同采样器与模型版本的出图效果
Pixel Dream Workshop 对比测试:不同采样器与模型版本的出图效果 1. 测试背景与目的 在AI绘画领域,采样器和模型版本的选择直接影响最终生成效果。本次测试旨在通过严谨的对比实验,帮助用户理解Pixel Dream Workshop中不同参数组合的实际表…...
OpenClaw安全指南:Qwen3-32B-Chat本地化执行边界控制
OpenClaw安全指南:Qwen3-32B-Chat本地化执行边界控制 1. 为什么需要关注OpenClaw的安全边界? 去年冬天的一个深夜,我被一阵急促的键盘敲击声惊醒。走进书房,发现OpenClaw正在自动执行我前一天设置的爬虫任务——这本是正常现象&…...
Prometheus动态服务发现实战:从文件到K8S的三种配置方法对比
Prometheus动态服务发现实战:文件、Consul与Kubernetes的深度对比 在云原生监控体系中,服务发现机制如同神经系统般实时感知基础设施变化。当面对混合架构时,如何在文件、Consul和Kubernetes三种主流方案中做出技术选型?本文将带…...
5种视频场景检测技术深度对比:如何为不同应用场景选择最佳算法
5种视频场景检测技术深度对比:如何为不同应用场景选择最佳算法 【免费下载链接】PySceneDetect :movie_camera: Python and OpenCV-based scene cut/transition detection program & library. 项目地址: https://gitcode.com/gh_mirrors/py/PySceneDetect …...
中国象棋AlphaZero:零基础构建超越人类棋力的AI对战系统
中国象棋AlphaZero:零基础构建超越人类棋力的AI对战系统 【免费下载链接】ChineseChess-AlphaZero Implement AlphaZero/AlphaGo Zero methods on Chinese chess. 项目地址: https://gitcode.com/gh_mirrors/ch/ChineseChess-AlphaZero 中国象棋AlphaZero是一…...
TradingAgents-CN:5分钟搭建你的AI投资智囊团,让普通人也能拥有专业金融分析能力
TradingAgents-CN:5分钟搭建你的AI投资智囊团,让普通人也能拥有专业金融分析能力 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-…...
Go HTTP Server 性能分析与优化
Go HTTP Server 性能分析与优化 在当今高并发的互联网应用中,HTTP Server的性能直接决定了用户体验和系统稳定性。Go语言凭借其轻量级协程和高效的网络库,成为构建高性能HTTP服务的首选之一。即使使用Go,开发者仍需深入分析性能瓶颈并进行针…...
Ostrakon-VL-8B效果展示:AI识别货架商品、检查消防通道真实案例
Ostrakon-VL-8B效果展示:AI识别货架商品、检查消防通道真实案例 1. 零售行业的视觉智能革命 走进任何一家超市或餐厅,你都会看到员工忙碌地进行各种检查:商品是否摆放整齐、货架是否需要补货、消防通道是否畅通。这些看似简单的工作&#x…...
赣州琴行哪家最可靠
在赣州,选择一家可靠的琴行对于孩子的钢琴启蒙和成长至关重要。今天我们就来聊聊赣州的几家知名琴行,看看哪家最适合您的孩子。1. 可六琴行:专注儿童钢琴启蒙,天天练琴模式为什么选择可六琴行?1.1 专注儿童钢琴启蒙具体…...
C++ Move 构造函数性能影响
C Move构造函数性能影响探析 在现代C编程中,Move构造函数是提升性能的重要工具之一。它通过“窃取”临时对象的资源而非深拷贝,显著减少了不必要的内存分配和数据复制。Move构造函数的性能影响并非总是显而易见,其实际效果取决于多种因素。本…...
