怎么用querywapper.select查询每个社团的人数和活动总数
时间: 2024-03-27 13:40:29 浏览: 22
您可以使用select方法联表查询每个社团的人数和活动总数。示例代码如下:
```
QueryWrapper<Club> queryWrapper = new QueryWrapper<>();
queryWrapper.select("club.id", "club.club_name", "count(distinct user.id) as user_count", "count(distinct activity.id) as activity_count")
.leftJoin("user", "user.club_id = club.id")
.leftJoin("activity", "activity.club_id = club.id")
.groupBy("club.id");
List<Map<String, Object>> list = clubMapper.selectMaps(queryWrapper);
for (Map<String, Object> map : list) {
int id = Integer.parseInt(map.get("id").toString());
String clubName = map.get("club_name").toString();
int userCount = Integer.parseInt(map.get("user_count").toString());
int activityCount = Integer.parseInt(map.get("activity_count").toString());
System.out.println("社团ID:" + id + ",社团名称:" + clubName + ",社团人数:" + userCount + ",活动总数:" + activityCount);
}
```
这里使用了select方法来查询每个社团的人数和活动总数。在select中使用聚合函数count(distinct ...)来统计人数和活动总数,并分别起别名为user_count和activity_count。leftJoin方法表示左连接,"user"和"activity"为要连接的表名,后面的条件为连接条件。groupBy方法表示按club.id分组,因为每个社团只需要查询一次,所以groupBy后面只需要指定club.id即可。selectMaps方法返回的是List<Map<String, Object>>类型的结果,其中每个Map表示一条记录,key为列名,value为列值。最后遍历每个Map,取出社团ID、社团名称、社团人数和活动总数即可。