LambdaQueryWrapper 怎么实现SUM求和 分组 并分页
时间: 2024-09-29 07:11:03 浏览: 46
sqlserver+group by分组查询分页存储过程
4星 · 用户满意度95%
LambdaQueryWrapper 是阿里巴巴 MyBatis Plus 中的一个高级操作查询封装工具,它提供了一种更简洁、直观的方式来编写 SQL 查询。如果你想通过 LambdaQueryWrapper 实现 SUM 求和、分组以及分页,可以按照以下步骤操作:
1. **SUM 求和**:
使用 `sum` 方法配合 lambda 表达式计算指定字段的总和,例如计算某个订单表中所有订单金额的总和:
```java
List<Order> orders = OrderMapper.selectSum(new LambdaQueryWrapper<Order>().select("amount"));
double totalAmount = orders.get(0).getAmount(); // 如果只有一条数据,直接取总和
```
2. **分组**:
要分组,可以在 `groupBy` 方法中添加分组条件,然后对每个分组应用聚合函数,如 SUM:
```java
Map<String, Double> groupTotalAmounts = OrderMapper.groupSum(new LambdaQueryWrapper<Order>()
.groupBy("category") // 按照类别分组
.select("category, sum(amount) as totalAmount"));
```
这将返回一个 map,键是类别名,值是该类别的订单总金额。
3. **分页**:
结合分组后,你可以使用 `offset` 和 `limit` 方法来实现分页,例如获取每组前10条记录:
```java
Page<GroupOrderInfo> groupedOrders = OrderMapper.groupPage(
new LambdaQueryWrapper<Order>()
.groupBy("category")
.limit(10), // 获取每组前10条
new Page<>(1, Constants.DEFAULT_PAGE_SIZE)); // 设置当前页码和每页大小
```
`GroupOrderInfo` 类需要包含对应的属性来保存聚合后的结果。
阅读全文