MybatisPlus 分组查询高级玩法
时间: 2024-01-11 17:21:08 浏览: 30
除了基本的分组查询并统计外,MybatisPlus还提供了一些高级玩法,例如分组查询并统计后再排序、分页等。
分组查询并统计后再排序可以使用orderBy()方法,例如我们需要按照订单数量降序排列:
```
QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user_id", "count(*) as order_count", "sum(price) as total_amount")
.groupBy("user_id")
.orderByDesc("order_count");
List<Map<String, Object>> result = orderMapper.selectMaps(queryWrapper);
```
以上代码使用orderByDesc()方法指定按照order_count字段降序排列。
分组查询并统计后再分页可以使用Page对象,例如我们需要查询第2页的数据,每页10条记录:
```
Page<Order> page = new Page<>(2, 10);
QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user_id", "count(*) as order_count", "sum(price) as total_amount")
.groupBy("user_id")
.orderByDesc("order_count");
IPage<Map<String, Object>> result = orderMapper.selectMapsPage(page, queryWrapper);
```
以上代码使用Page对象指定第2页和每页10条记录,并使用selectMapsPage()方法进行分页查询。
需要注意的是,高级玩法的实现方式与基本的分组查询并统计类似,只是在Wrapper对象中添加了更多的条件。