微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MybatisPlus怎么使用聚合函数

这篇文章主要介绍了MybatisPlus怎么使用聚合函数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MybatisPlus怎么使用聚合函数文章都会有所收获,下面我们一起来看看吧。

首先如果使用sql是这么写的:

MybatisPlus怎么使用聚合函数

ok,既然知道了sql怎么写的,那就开始写代码

注意,本文主要以sum为例,但是也同时适用于其他聚合函数,比如avg,min,max

方式1 通过select自定义sql

一个sum

虽然MybatisPlus没有直接提供对sum函数操作的api,但是QueryWrapper里面有一个select的api,可以支持我们自定义查询sql

注意:我这种写法需要实体中有这个别名,不然不行的!

MybatisPlus怎么使用聚合函数

那我就直接把代码贴出来了:

 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了一个字段,但是调用接口的时候,发现一个值是空的:

MybatisPlus怎么使用聚合函数

MybatisPlus怎么使用聚合函数

这其实是错误的!除非再创建一个queryWrapper写select!

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

MybatisPlus怎么使用聚合函数

这次就好啦,解决问题!

MybatisPlus怎么使用聚合函数

方式2 xml手写原生sql

觉得上面的方式比较麻烦,那就可以简单点,直接在mapper(dao).xml里面手写sql

一般项目中都是MybatisPlus和Mybatis同时使用的,就是防止一些关联或者特别麻烦的sql

关于“MybatisPlus怎么使用聚合函数”这篇文章内容就介绍到这里,感谢各位的阅读!相信大家对“MybatisPlus怎么使用聚合函数”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程之家行业资讯频道。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐