mybatis plus 如何统计抽奖参与人数的sql
时间: 2023-07-18 12:09:59 浏览: 87
MyBatis-Plus可以使用Wrapper或者LambdaQueryWrapper进行统计查询。
使用Wrapper进行统计查询:
```java
QueryWrapper<LotteryRecord> wrapper = new QueryWrapper<>();
wrapper.eq("lottery_id", 1).select("COUNT(DISTINCT user_id) as total");
Map<String, Object> map = lotteryRecordMapper.selectMaps(wrapper).get(0);
Long total = (Long) map.get("total");
```
使用LambdaQueryWrapper进行统计查询:
```java
LambdaQueryWrapper<LotteryRecord> lambdaWrapper = Wrappers.lambdaQuery();
lambdaWrapper.eq(LotteryRecord::getLotteryId, 1).select(SqlKeyword.COUNT.getColumn() + "(DISTINCT " + LotteryRecord::getUserId + ") as total");
Map<String, Object> map = lotteryRecordMapper.selectMaps(lambdaWrapper).get(0);
Long total = (Long) map.get("total");
```
其中,`selectMaps`方法返回的是`List<Map<String, Object>>`类型的结果集,每个Map对象表示一行记录,其中key为字段名,value为字段值。因为只有一行记录,所以可以直接取第一个Map对象。`SqlKeyword.COUNT.getColumn()`表示统计函数的名称,可以使用其他的统计函数,例如SUM、AVG等。`LotteryRecord::getUserId`表示使用Lambda表达式获取`LotteryRecord`实体类的`userId`属性,可以根据实际情况进行调整。
阅读全文