前言

今天遇到了一个求总数返回的情况,我一想这不是用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使用聚合函数相关推荐

  1. MybatisPlus调用count函数

    项目整合了mybatisPlus时,可以使用count函数做一些简单的统计 前言 今天项目中遇到一个记录统计,由于项目整合过mybatisPlus,就不通过mybatis去写sql做查询,可通过Que ...

  2. TSQL 聚合函数忽略NULL值

    max,min,sum,avg聚合函数会忽略null值,但不代表聚合函数不返回null值,如果表为空表,或聚合列都是null,则返回null.count 聚合函数忽略null值,如果聚合列都是null ...

  3. Oracle 聚合函数(Aggregate Functions)说明

    Oracle Aggregate Functions用过很多,官网的说明如下: Aggregate Functions http://docs.oracle.com/cd/E11882_01/serv ...

  4. MySQL数据库聚合函数(count、max、min、sum、avg)

    1. 聚合函数的介绍 聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据. 常用的聚合函数: count(col): 表示求指定列的总 ...

  5. Spark:group by和聚合函数使用

    groupBy分组和使用agg聚合函数demo: df.show +----+-----+---+ |YEAR|MONTH|NUM| +----+-----+---+ |2017| 1| 10| |2 ...

  6. R语言使用reshape2包的dcast函数将dataframe从长表到宽表(Long- to wide-format)、指定单个标识符、、表格转化的时候值不唯一设置聚合函数(均值)

    R语言使用reshape2包的dcast函数将dataframe从长表到宽表(Long- to wide-format).指定单个标识符..表格转化的时候值不唯一设置聚合函数(均值) 目录

  7. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

  8. SSRS 2012 聚合函数 -- 隔行换色示例

    SSRS 2012 聚合函数 -- 隔行换色示例 有时我们希望报表能够显示出数据笔数的流水序号,如果要使用T-SQL查询来做出这种效果,通常必须使用RANK函数以自动产生编号,在此将介绍如何使用SSR ...

  9. T-SQL 聚合函数Count与NULL

    大家都知道聚合函数是做统计用的,而count函数是统计行数的,也就是满足一定条件记录的行数. 下面我们来看下这个count与NULL的微妙关系. CREATE TABLE dbo.Student (S ...

最新文章

  1. android Canvas 最基础知识总结
  2. Directory File Disk Searcher
  3. linux的阻塞waitqueue,Linux阻塞控制 wait_event与wait_event_interruptible函数详解
  4. 《飞鸽传书》把写程序和文学创作相提并论
  5. MJRefresh上拉刷新下拉加载
  6. android程序逆向工程
  7. 对二维数组排序 使得每行每列非递减
  8. mapxtreme相关
  9. Radon 变换原理和应用
  10. LeetCode刷题第5周小结
  11. (STM32笔记2)基于hc05的蓝牙实验
  12. php get defined,php中get_defined_constants函数用法实例分析
  13. python中取余%
  14. send_nsca passive monitor setup notes
  15. Tomcat 配置集锦
  16. 模拟cmos集成电路(8)
  17. Springmvc-简单入门
  18. 温度实时监控上报(客户端)
  19. 安装APK报错解决方法
  20. Ubuntu 安装QQ for Linux 笔记

热门文章

  1. PHPExcel使用的常用说明以及把PHPExcel整合进CI框架
  2. 安卓平板usb变显示器_台电千元水桶平板电脑,能办公能上网课,玩游戏比手机更爽...
  3. L1-018 大笨钟(java)
  4. 计算机考试 什么链,啥数组、链表、线性结构?计算机二级office选择题必考串讲2-2...
  5. 杨森翔的书法-4爨体对联:海上天中
  6. sql如何遍历几百万的表_关于SQL查询效率,100w数据,查询只要1秒
  7. 【Rookie初学Java】关于初学Java遇到的一些具体问题
  8. FIR数字滤波器设计_MATLAB语音滤波实验02
  9. 你好,《01改变世界》
  10. Python爬虫:BeautifulSoup库