MyBatis-Plus 在 QueryWrapper 中使用 SUM 聚合函数
🏷️ MyBatis
为了避免使用字符串的字段名,一般都是使用 LambdaQueryWrapper
查询,但是 groupBy
后想在 select
中指定聚合函数时,没有发现对应的方法。
参考这篇博客中的写法,可以通过 QueryWrapper
的 select
方法指定查询结果的列,由于是字符串类型的参数,可以在其中使用聚合函数。
下面是一个 SUM
的示例,由于 SUM
的结果可能为 null
,最好是添加一个 IFNULL
判断将结果转换一下。
java
QueryWrapper<Entity> queryWrapper = Wrappers.query();
queryWrapper.ge("day", startDate);
queryWrapper.le("day", endDate);
if (StringUtils.isNoneBlank(appId)) {
queryWrapper.eq("app_id", appId);
}
queryWrapper.groupBy("day");
queryWrapper.select(
"day",
"IFNULL(SUM(uv),0) uv",
"IFNULL(SUM(uv_receive),0) uv_receive",
"IFNULL(SUM(uv_video),0) uv_video"
);
return summaryService.list(queryWrapper);