lambdaquery聚合函数(max、sum)查询指定字段
时间: 2023-10-08 20:12:53 浏览: 3950
MySQL 分组查询和聚合函数
使用MyBatis-Plus的LambdaQueryWrapper可以实现聚合函数(max、sum)查询指定字段的功能。具体实现步骤如下:
1. 在查询时,使用LambdaQueryWrapper的select方法指定需要查询的字段,并使用LambdaQueryWrapper的groupBy方法指定分组字段。例如,查询用户表中每个性别的最大年龄和总年龄:
```
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(User::getGender,
// max函数对应的方法名为max,sum函数对应的方法名为sum
// 同时需要使用实体类的属性引用,指定需要统计的字段
max(User::getAge).as("max_age"),
sum(User::getAge).as("total_age"))
.groupBy(User::getGender);
List<Map<String, Object>> result = userMapper.selectMaps(queryWrapper);
```
其中,select方法的第二个和第三个参数为max和sum函数,可以使用实体类的属性引用,指定需要统计的字段。groupBy方法的参数为分组字段,可以使用实体类的属性引用,也可以使用Lambda表达式。
2. 查询结果为Map类型,其中key为查询字段的别名,value为统计结果。可以使用result转为需要的数据类型,例如:
```
List<UserStat> userStatList = result.stream()
.map(map -> new UserStat((Integer) map.get("gender"),
(Integer) map.get("max_age"),
(Long) map.get("total_age")))
.collect(Collectors.toList());
```
其中,UserStat为自定义的实体类,用于保存统计结果。
阅读全文