使用 mybatis-plus 的mybaits的一对多时, total和record的不匹配问题
应该是框架的问题,去官方仓库提了个issues,等回复
https://github.com/baomidou/mybatis-plus/issues/5923
回复来了:
背景
发现 record是两条,但是total显示3
使用resultMap一对多时,三条数据会变成两条,但是total确是3条
下面是一对多的resultMap代码
想要达成的效果
有意思的是,把sql拿出来,执行的确是三条,只是在mapper中进行了一对多的关联,关联后变成两条
但是这里的total有问题,需要优化
原理分析
mybatis-plus在执行sql前,会执行查询total的sql
这里的查询是根据原sql拼接而来,也就是未进行一对多操作的sql
怀疑是框架本身的bug,在框架项目的issues中查找了一番,并没有找到相关答案
框架地址:https://github.com/baomidou/mybatis-plus
于是选择更换一对多的方式,改为子查询
改动前:
<collection property="potentialCustomerMediaVOList" ofType="com.djbx.cxb.manager.vo.business.PotentialCustomerMediaVO"><result column="create_time" property="createTime"/><result column="url" property="url"/>
</collection>
改动后:
<collection property="potentialCustomerMediaVOList" ofType="com.djbx.cxb.manager.vo.business.PotentialCustomerMediaVO" select="getCustomerMediaVOList"column="id"><id column="id" property="id"/><result column="create_time" property="createTime"/><result column="url" property="url"/>
</collection>
子查询sql:
<select id="getCustomerMediaVOList" resultType="com.djbx.cxb.manager.vo.business.PotentialCustomerMediaVO">select pcm.id, pcm.create_time, pcm.url from potential_customer_media pcm where pcm.pid = #{id} and pcm.media_node = 3order by pcm.id desc
</select>
完美解决!又捡起来一种遗忘的mybatis一对多的方式
引申思考
如何传入前端入参到子查询中?
可以在父查询中新增一个查询字段,比如:select #{param.address} as address
然后在column中传入
<collection property="potentialCustomerMediaVOList" ofType="com.djbx.cxb.manager.vo.business.PotentialCustomerMediaVO" select="getCustomerMediaVOList"column="id"><id column="{id=id,address=address}" property="id"/><result column="create_time" property="createTime"/><result column="url" property="url"/>
</collection>
未测试,应该可用
参考链接
Mybatis一对多,分页问题及映射问题_一对多映射 分页-CSDN博客
相关文章:

使用 mybatis-plus 的mybaits的一对多时, total和record的不匹配问题
应该是框架的问题,去官方仓库提了个issues,等回复 https://github.com/baomidou/mybatis-plus/issues/5923 回复来了: 背景 发现 record是两条,但是total显示3 使用resultMap一对多时,三条数据会变成两条࿰…...

SpringCloud之Nacos
一、微服务介绍 1. 什么是微服务 2014年,Martin Fowler(马丁福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模…...

小封装高稳定性振荡器 Sg2520egn / sg2520vgn, sg2520ehn / sg2520vhn
描述 随着物联网和ADAS等5G应用的实施,数据流量不断增长,网络基础设施变得比以往任何时候都更加重要。IT供应商一直在快速建设数据中心,并且对安装在数据中心内部/内部的光模块有很大的需求。此应用需要具有“小”,“低抖动”和“…...

使用 Apache POI 更新/覆盖 特定的单元格
使用 Apache POI 更新特定的单元格 一. 需求二. 实现三. 效果 一. 需求 将以下表中第4行,第4列的单元格由“张宇”更新为“汤家凤”,并将更行后的结果写入新的Excel文件中; 二. 实现 使用Apache POI,可以精确定位到需要更改的单…...

Spring Boot整合MyBatis-Plus
引言 在现代软件开发中,我们经常需要处理大量的数据。为了有效地管理这些数据,我们需要使用一些强大的框架。其中,Spring Boot和MyBatis-Plus是两个非常流行的框架。Spring Boot是一个基于Spring的开源Java框架,可以用于创建独立…...
springboot项目之AOP角色权限的判断
引言 开发的项目中,可能遇到不同的角色,不同的角色有不通的权限定义。AOP切面是个很好的解决方案。 实践 1. 定义MerchRoles Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface MerchRoles {} 2. 定义切点 public c…...
Twincat PLC 跳出循环
在TwinCAT PLC编程中,要跳出循环结构通常可以通过以下几种方式实现: 使用Break指令: 在TwinCAT 3的PLC编程环境中(IEC 61131-3标准),可以使用BREAK指令来立即终止最内层的循环。例如,在FOR或WH…...

【Leetcode】277.搜寻名人
一、题目 1、题目描述 假设你是一个专业的狗仔,参加了一个 n 人派对,其中每个人被从 0 到 n - 1 标号。在这个派对人群当中可能存在一位 “名人”。所谓 “名人” 的定义是:其他所有 n - 1 个人都认识他/她,而他/她并不认识其他任何人。 现在你想要确认这个 “名人” 是…...

小白数学建模 Mathtype 7.7傻瓜式下载安装嵌入Word/WPS以及深度使用教程
数学建模Mathtype的下载安装嵌入Word/WPS以及深度使用教程 一 Mathtype 的下载安装1.1 安装前须知1.2 下载压缩包1.3 安装注册 二 嵌入Word/WPS2.1 嵌入Word2.1.1 加载项嵌入 Word2.1.2 宏录制嵌入 Word 2.2 嵌入 WPS2.2.1 加载项嵌入 WPS2.2.2 宏录制嵌入 WPS 2.3 嵌入时报错解…...

Linux之which和find
...
MySQL 常规操作指南
1. 连接MySQL服务器 (1)通过命令行连接 mysql -u username -p在提示下输入对应用户的密码,即可进入MySQL命令行界面。 (2)指定数据库连接 mysql -u username -p -D database_name这里会直接连接到名为database_nam…...

Rocketmq rust版本-开篇
我是蚂蚁背大象(Apache EventMesh PMC&Committer),文章对你有帮助给Rocketmq-rust star,关注我GitHub:mxsm,文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsmapache.com Rust重构Rocketmq,大家好我是mxsm(Apache EventMesh PMC&Comm…...
springboot3+springsecurity6集成druid启动报错
环境:springboot3security6druid1.2.20 druid1.2.20这个版本开始支持springboot3自动配置,不再需要手动引入 依赖为 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId>…...

golang面试题大全
go基础类 1、与其他语言相比,使用 Go 有什么好处? 与其他作为学术实验开始的语言不同, Go 代码的设计是务实的。每个功能和语法决策都旨在让程序员的生活更轻松。Golang 针对并发进行了优化,并且在规模上运行良好。由于单一的标…...

Google 在裁员的路上一路狂奔
早上刷新闻,Google 在 2024 开年还没几天就宣布了今年的裁员计划。 前几天还在说我们当地的大学为了削减预算而进行裁员。 大厂谷歌却是首当其冲,裁员1000多人,涉及了核心工程、谷歌助理、Pixel手机等硬件团队的人员。 截至2023年9月30日&…...

橘子学K8S04之重新认识Docker容器
我们之前分别从 Linux Namespace 的隔离能力、Linux Cgroups 的限制能力,以及基于 rootfs 的文件系统三个角度来理解了一下关于容器的核心实现原理。 这里一定注意说的是Linux环境,因为Linux Docker (namespaces cgroups rootfs) ! Docker on Mac (bas…...
Day31- 贪心算法part05
一、无重叠区间 题目一:453. 无重叠区间 435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 主要思想是优先保留结束时间早的区间,这样…...

基于springboot+vue的蜗牛兼职网的设计与实现系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...

【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )
文章目录 一、帧率1、帧率简介2、常见帧率标准3、帧率 刷新率 二、码率1、码率简介2、码率单位 一、帧率 1、帧率简介 帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画…...
CSS Position总结:定位属性的实战技巧
CSS Position总结:定位属性的实战技巧 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在今天的文章中,我们将深入研究CSS中一个至关重要的属…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...