MybatisPlus使用聚合函数的示例代码

 更新时间:2023年3月17日 13:59  点击:372 作者:小花皮猪

前言

今天遇到了一个求总数返回的情况,我一想这不是用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使用聚合函数的示例代码的文章就介绍到这了,更多相关MybatisPlus 聚合函数内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

原文出处:https://blog.csdn.net/weixin_46713508/article/details/129043

[!--infotagslink--]

相关文章

  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • MybatisPlus实现逻辑删除功能

    这篇文章主要介绍了MybatisPlus实现逻辑删除功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-25
  • 解决mybatisplus插入报错argument type mismatch的问题

    这篇文章主要介绍了解决mybatisplus插入报错argument type mismatch的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-25
  • MybatisPlus实现分页查询和动态SQL查询的示例代码

    本文主要介绍了MybatisPlus实现分页查询和动态SQL查询的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-30
  • SQL中的开窗函数详解可代替聚合函数使用

    这篇文章主要介绍了SQL中的开窗函数详解可代替聚合函数使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • MySQL常用聚合函数详解

    下面小编就为大家带来一篇MySQL常用聚合函数详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-06-24
  • 一篇超详细的SpringBoot整合MybatisPlus的文章

    这篇文章主要介绍了springboot整合Mybatis-plus的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-07-27
  • springboot+mybatis plus实现树形结构查询

    实际开发过程中经常需要查询节点树,根据指定节点获取子节点列表,本文主要介绍了springboot+mybatis plus实现树形结构查询,感兴趣的可以了解一下...2021-07-22
  • MySQL使用聚合函数进行单表查询

    这篇文章主要介绍了MySQL使用聚合函数进行单表查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-04
  • SpringBoot+MyBatisPlus+MySQL8实现树形结构查询

    这篇文章主要为大家详细介绍了SpringBoot+MyBatisPlus+MySQL8实现树形结构查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-07
  • MybatisPlus代码生成器的使用方法详解

    在这里我将展示如何自动生成实体类、控制层、服务层、mapper等代码,这些基础的代码全部不需要我们手动创建,由MybatisPlus自动帮我们完成,我们只需要告诉MybatisPlus怎么生成这些代码就可以了,在此之前我们需要配置好测试的环境,数据库和表数据,需要的朋友可以参考下...2021-06-13
  • mybatisplus的坑 insert标签insert into select无参数问题的解决

    这篇文章主要介绍了mybatisplus的坑 insert标签insert into select无参数问题的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-12-03
  • springboot集成mybatisPlus+多数据源的实现示例

    这篇文章主要介绍了springboot集成mybatisPlus+多数据源的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-26
  • SpringBoot整合Mybatis Plus多数据源的实现示例

    本文主要介绍了SpringBoot整合Mybatis Plus多数据源的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-11-04
  • MyBatisPlus使用@TableField注解处理默认填充时间的问题

    这篇文章主要介绍了MyBatisPlus使用@TableField注解处理默认填充时间的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-01-15
  • MyBatisPlus利用Service实现获取数据列表

    这篇文章主要为大家详细介绍了怎样使用IServer提供的list方法查询多条数据,这些方法将根据查询条件获取多条数据,感兴趣的可以了解一下...2022-06-17
  • MybatisPlus使用聚合函数的示例代码

    本文主要介绍了MybatisPlus使用聚合函数的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2023-03-17
  • 如何使用MybatisPlus快速进行增删改查详解

    增删改查在日常开发中是再正常不多的一个需求了,下面这篇文章主要给大家介绍了关于如何使用MybatisPlus快速进行增删改查的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下...2022-08-05
  • mybatis-plus查询源码详解

    这篇文章主要介绍了mybatis-plus查询源码解读,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-03-02
  • 关于MybatisPlus配置双数据库驱动连接数据库问题

    这篇文章主要介绍了MybatisPlus配置双数据库驱动连接数据库的具体实现,具体的业务逻辑,在service层的类或者方法上面添加@DataSource注解来指定该业务需要用到的数据源,需要的朋友可以参考下...2022-01-22