lambdaquery聚合函数查询指定字段
时间: 2023-09-20 15:06:01 浏览: 53
使用MyBatis-Plus的LambdaQueryWrapper可以实现聚合函数查询指定字段的功能。具体实现步骤如下:
1. 在查询时,使用LambdaQueryWrapper的select方法指定需要查询的字段,并使用LambdaQueryWrapper的groupBy方法指定分组字段。例如,查询用户表中每个性别的人数:
```
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(User::getGender,
// count函数对应的方法名为count,sum函数对应的方法名为sum
// 同时需要使用实体类的属性引用,指定需要统计的字段
// LambdaQueryWrapper的as方法可以为字段取别名
count(User::getId).as("count"))
.groupBy(User::getGender);
List<Map<String, Object>> result = userMapper.selectMaps(queryWrapper);
```
其中,select方法的第二个参数为统计函数,可以使用MyBatis-Plus提供的函数,也可以使用自定义的函数。groupBy方法的参数为分组字段,可以使用实体类的属性引用,也可以使用Lambda表达式。
2. 查询结果为Map类型,其中key为查询字段的别名,value为统计结果。可以使用result转为需要的数据类型,例如:
```
List<UserCount> userCountList = result.stream()
.map(map -> new UserCount((Integer) map.get("gender"), (Long) map.get("count")))
.collect(Collectors.toList());
```
其中,UserCount为自定义的实体类,用于保存统计结果。