MybatisPlus使用聚合函数
前言
今天遇到了一个求总数返回的情况,我一想这不是用sum就完事了吗。
但是仔细想想,MybatisPlus好像没有直接使用sum的api。
虽然没有直接提供,但是办法还是有的,下面就分享下如何实现的:
首先如果使用sql是这么写的:

ok,既然知道了sql怎么写的,那就开始写代码吧
注意,本文主要以sum为例,但是也同时适用于其他聚合函数,比如avg,min,max
方式1 通过select自定义sql
求一个sum
虽然MybatisPlus没有直接提供对sum函数操作的api,但是QueryWrapper里面有一个select的api,可以支持我们自定义查询sql。
注意:我这种写法需要实体中有这个别名,不然不行的!

那我就直接把代码贴出来了:
public Map queryGuaranteeOrderSumAmount() {GuaranteeOrder guaranteeOrder =new GuaranteeOrder();QueryWrapper<GuaranteeOrder> queryWrapper = new QueryWrapper<>();// 退款金额总计 sum聚合函数queryWrapper.select("sum(refund_amount)refundAmount");// 这条订单信息的详情GuaranteeOrder guaranteeOrderDetail= this.getOne(queryWrapper);if (guaranteeOrderDetail== null){guaranteeOrder.setRefundAmount(BigDecimal.valueOf(Double.valueOf(0)));}else{guaranteeOrder.setRefundAmount(guaranteeOrderDetail.getRefundAmount());}HashMap<String, Object> map = new HashMap<>();// 退款金额总计map.put("refundSumAmount",guaranteeOrderDetail.getRefundAmount());return map;}
可以看到执行的sql是一样的。证明我们的思路和语法是没问题的
求多个sum
那有的小可爱(大聪明)可能就会这么想了,那我要是想sum多个值,是不是再写一个select就可以了,那还真不是!我就是这个大聪明:
如图所示,我又sum了一个字段,但是调用接口的时候,发现一个值是空的:


这其实是错误的!除非再创建一个queryWrapper写select!
正所谓高手怕菜鸟,其实是我们想的太复杂啦,简单的解决方式是:sql怎么写,你就怎么写嘛,直接在后面再拼一个条件就好了,例如:

这次就好啦,解决问题!

方式2 xml手写原生sql
觉得上面的方式比较麻烦,那就可以简单点,直接在mapper(dao).xml里面手写sql
一般项目中都是MybatisPlus和Mybatis同时使用的,就是防止一些关联或者特别麻烦的sql。
总结
虽然MybatisPlus没有直接提供我们使用聚合函数的api,但是通过select也是可以获取到编写自定义sql的,使用起来也还好啦。希望后续国产MP开发团队可以专门针对这些函数进行封装,这样使用起来就更方便了!
相关文章:
MybatisPlus使用聚合函数
前言 今天遇到了一个求总数返回的情况,我一想这不是用sum就完事了吗。 但是仔细想想,MybatisPlus好像没有直接使用sum的api。 虽然没有直接提供,但是办法还是有的,下面就分享下如何实现的: 首先如果使用sql是这么写…...
工程管理系统源码企业工程管理系统简介
一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...
《计算机视觉和图像处理简介 - 中英双语版》:使用 OpenCV对图像进行空间滤波
文章大纲 Linear Filtering 线性滤波器Filtering Noise 过滤噪声Gaussian Blur 高斯滤波Image Sharpening 图像锐化Edges 边缘滤波Median 中值滤波Threshold Function Parameters 阈值函数参数References本文大概需要40分钟 Spatial Operations in Image Processing 图像处理中…...
FreeRTOS软件定时器 | FreeRTOS十三
目录 说明: 一、定时器简介 1.1、定时器 1.2、软件定时器 1.3、硬件定时器 1.4、FreeRTOS软件定时器 1.5、软件定时器服务任务作用 1.6、软件定时器的命令队列 1.7、软件定时器相关配置 1.8、单次定时器和周期定时器 1.9、软件定时器结构体 二、软件定时…...
电脑文件被误删?360文件恢复工具,免费的文件恢复软件
电脑里面保存着各种文件,因为误操作我们把还需要用的文件给删除了。很多人都想要使用不收费的文件恢复软件来进行恢复操作,但是又不清楚有哪些文件可以帮到我们。接下来就给大家介绍,一款真正免费的数据 恢复app,一起来看看&#…...
pg_cron优化案例--terminate pg_cron launcher可自动拉起
场景 在PostgreSQL中我们可以使用pg_cron来实现数据库定时任务 我有一个select 1的定时任务,每分钟触发一次 testdb# select * from cron.job ;jobid | schedule | command | nodename | nodeport | database | username | active | jobname -------…...
Python 之 NumPy 随机函数和常用函数
文章目录一、随机函数1. numpy.random.rand(d0,d1,…,dn)2. numpy.random.randn(d0,d1,…,dn)3. numpy.random.normal()4. numpy.random.randint()5. numpy.random.sample6. 随机种子np.random.seed()7. 正态分布 numpy.random.normal二、数组的其他函数1. numpy.resize()2. nu…...
【目标检测】K-means和K-means++计算anchors结果比较(附完整代码,全网最详细的手把手教程)
写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 一、介绍 YOLO系列目标检测算法中基于anchor的模型还是比较多的,例如YOLOv3、YOLOv4、YOLOv5等,我们可以随机初始化a…...
Java高手速成 | 图说重定向与转发
我们先回顾一下Servlet的工作原理,Servlet的工作原理跟小猪同学食堂就餐的过程很类似。小猪同学点了烤鸡腿(要奥尔良风味的),食堂窗口的服务员记下了菜单,想了想后厨的所有厨师,然后将菜单和餐盘交给专门制…...
Git:不小心在主分支master上进行修改,怎么才能将修改的数据保存到正确的分支中
1.如果还没有push commit 代码第一步:将所修改的代码提交到暂存区git stash第二步:切换到正确的分支git checkout 分支名第三步:从暂存区中取出保存到正确的分支中git stash pop第四步:重新提交git push origin 分支名2.如果已经p…...
都2023年了,如果不会Stream流、函数式编程?你确定能看懂公司代码?
👳我亲爱的各位大佬们好😘😘😘 ♨️本篇文章记录的为 Stream流、函数式编程 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉🙉。 ♨️如果…...
亚马逊云科技汽车行业解决方案
当今,随着万物智联、云计算等领域的高速发展,创新智能网联汽车和车路协同技术正在成为车企加速发展的关键途径,推动着汽车产品从出行代步工具向着“超级智能移动终端”快速转变。 挑战无处不在,如何抢先预判? 随着近…...
为什么学了模数电还是看不懂较复杂的电路图
看懂电路并不难。 (1) 首先要摆正心态,不要看到错综复杂的电路图就一脸懵逼,不知所错。你要明白,再复杂的电路也是由一个个的基本电路拼装出来的。 (2) 基础知识当然是少不了的,常用的基本电路结构搞搞清楚。 (3) 分析电路之前先要…...
帮公司面试了一个30岁培训班出来的程序员,没啥工作经验...
首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情。 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的…...
勒索软件、网络钓鱼、零信任和网络安全的新常态
当疫情来袭时,网络罪犯看到了他们的机会。随着公司办公、政府机构、学校和大学从以往的工作模式转向远程线上办公模式,甚至许多医疗保健设施都转向线上,这种快速的过渡性质导致了不可避免的网络安全漏洞。消费者宽带和个人设备破坏了企业安全…...
python3 字符串拼接与抽取
我们经常会有对字符串进行拼接和抽取的需求,下面有几个例子可以作为参考。 需求1:取出ip地址的网络地址与网络掩码进行拼接,分别使用shell脚本和python3实现 # echo "192.168.0.1"|awk -F. {print $1"."$2"."…...
Linux就该这么学:存储结构与管理硬盘
Linux系统中常见的目录名称以及相应内容 目录名称应放置文件的内容/boot开机所需文件—内核、开机菜单以及所需配置文件等/dev以文件形式存放任何设备与接口/etc配置文件/home用户主目录/bin存放单用户模式下还可以操作的命令/lib开机时用到的函数库,以及/bin与/sbin下面的命令…...
JSP四大作用域,九大内置对象
面试题:JSP和Servlet的区别?JSP的本质就是servleJSP更加侧重于视图的展示,servlet更注重逻辑的处理。面试题:include指令和jsp:include标签的区别?从效果上来说,没区别。include指令是把两个页面合成一个js…...
机器学习笔记之生成模型综述(五)重参数化技巧(随机反向传播)
机器学习笔记之生成模型综述——重参数化技巧[随机反向传播]引言回顾神经网络的执行过程变分推断——重参数化技巧重参数化技巧(随机反向传播)介绍示例描述——联合概率分布示例描述——条件概率分布总结引言 本节将系统介绍重参数化技巧。 回顾 神经网络的执行过程 上一节…...
1、创建第一个Android项目
1.1、创建Android工程项目:双击打开Android Studio。在菜单栏File中new-->new project3、在界面中选择Empty Activity,然后选择next4、在下面界面中修改工程名称,工程保存路径选择java语言,然后点击finishAndroid studio自动为…...
python-flask-djangol框架的考公考编学习课程资料推荐系统
目录技术选型与架构设计数据采集与处理推荐算法实现用户画像构建前端交互与功能部署与优化合规与扩展项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术选型与架构设计 采用Python Flask作为后端框架,搭配SQLAlch…...
【AI重塑科研】无需通读全文,三步教你用大模型高效产出文献综述
1. 为什么你需要AI辅助文献综述? 每次打开文献库看到上百篇待读论文就头皮发麻?我完全理解这种感受。去年准备开题报告时,导师要求我两周内完成50篇核心文献的综述,当时差点崩溃。直到我发现用大模型处理文献可以节省90%的时间&am…...
告别bypy上传失败!用Aria2+百度云直链脚本,让服务器下载速度飙升5倍
告别bypy上传失败!用Aria2百度云直链脚本,让服务器下载速度飙升5倍 如果你经常需要将百度网盘中的大文件(比如几十GB的机器学习模型或数据集)传输到服务器上,一定对bypy的种种限制深有体会——速度慢、不稳定、大文件容…...
生物认证锁:用虹膜加密核心模块——软件测试从业者的专业指南
在数字化转型浪潮中,生物认证技术正重塑安全防护体系,其中虹膜识别凭借其超高精度和防伪特性,成为加密核心模块(如支付系统、数据库访问控制或敏感API)的首选方案。作为软件测试从业者,您肩负着验证系统鲁棒…...
【字节/阿里/微软Python高级岗内部题库】:GIL移除过渡期必须掌握的7种无锁并发模式
第一章:GIL移除背景与无锁并发演进全景图Python 的全局解释器锁(GIL)长期被视为多核 CPU 利用率的瓶颈,尤其在 CPU 密集型场景下,线程无法真正并行执行。近年来,CPython 社区启动了 GIL 移除(GI…...
从浮点到定点:手把手教你用MATLAB自定义函数实现加减乘除(避坑溢出与精度损失)
从浮点到定点:手把手教你用MATLAB自定义函数实现加减乘除(避坑溢出与精度损失) 当算法需要从实验室环境迁移到嵌入式设备时,浮点运算的硬件开销常常成为瓶颈。这时定点数运算就像一把手术刀——精准控制每个比特的用途,…...
人工智能高质量数据集概述
人工智能高质量数据集,是指经过标准化采集、清洗、标注、质检、脱敏及结构化处理,能够直接用于人工智能模型开发、训练与优化,且能有效提升模型性能、保障模型泛化能力,具备高可用性、高一致性、高安全性和高适配性的结构化或非结…...
别再拍脑袋定权重了!多目标规划中权重和ε值确定的3种科学方法
多目标规划中权重与约束值的科学确定方法:从理论到实践 1. 多目标规划的核心挑战与参数确定的重要性 在现实世界的决策场景中,我们很少遇到仅需优化单一目标的简单问题。无论是产品设计、资源分配还是投资组合管理,决策者往往需要同时考虑多个…...
手指划过屏幕放大模型界面,环氧树脂层和纤维基体在激光路径下呈现出清晰的物理场分布。突然发现这个双层材料烧蚀模型跑得格外顺畅——看来前几天通宵调参没白费
comsol激光清洗、烧蚀双层材料 表面一层50μm厚度的环氧树脂(可更换成其他材料),基体材料为纤维材料。 添加功率为13W的激光进行清洗或烧蚀 模型非常成功、角度选择很奈斯在COMSOL里建模时有个小细节特别关键:把环氧树脂层的厚度参数设为全局变量。别小看…...
【Frida Android】实战篇:Frida-Trace 进阶追踪——JNI 函数参数捕获与修改
1. 为什么需要捕获JNI函数参数? 在Android安全分析和逆向工程中,JNI函数往往是关键突破口。很多应用会把核心逻辑放在native层实现,比如加密算法、授权验证、敏感数据处理等。单纯Hook Java层方法可能无法触及这些关键逻辑,这时候…...
