使用 groupBy()
和 select()
方法。假设我们有一个 Order 实体类,其中包含一个状态属性 status 和一个价格属性 price,我们需要按照状态进行分组,统计每个状态的订单数量和总价格,可以使用以下代码:
QueryWrapper<Order> wrapper = new QueryWrapper<>();
wrapper.select("status", "count(*) as count", "sum(price) as total_price") // 选择需要统计的字段
.groupBy("status"); // 按照状态分组
List<Map<String, Object>> orderStats = orderMapper.selectMaps(wrapper);
System.out.println(orderStats);
这里使用 selectMaps()
方法将查询结果转换为一个 Map 列表,其中每个 Map 包含状态、订单数量和总价格三个键值对。其中 count(*)
和 sum(price)
是 SQL 中的聚合操作,这里可以在 select 语句中直接使用别名 as count
和 as total_price
指定结果集中的字段名。
注意,查询结果中键值对的顺序与 select()
方法中指定字段的顺序一致。如果你需要更改顺序,可以使用 SQL 中的 as
关键字来指定别名。
除了使用 selectMaps()
方法,你还可以使用 selectObjs()
方法获取查询结果中的单个属性,或使用 selectList()
方法获取一个实体对象列表。