🎉工作中遇到这样一个需求场景:实现一个统计查询,要求可以根据用户在前端界面筛选的字段进行动态地分组统计。也就是说,后端在实现分组查询的时候,Group By 的字段是不确定的,可能是一个字段、多个字段或者不进行分组查询,这都是由用户在前端决定的。
💡这里给出的实现方案:
- 前端界面收集用户需要分组统计的字段,然后将这些字段名组成一个字符串,字段名之间由逗号分隔,传递给后端。
- 后端拿到分组字段名字符串再根据逗号分隔符进行处理,拼装成一个分组字段名列表。
- 最后,利用 Mybatis 框架的动态 SQL 语句,实现动态分组字段的统计查询。
控制类XxxStatisticsController实现代码如下:
@RestController
@RequestMapping("/statistics")
public class XxxStatisticsController {
@Autowired
private XxxService xxxService;
@Operation(method = GET_METHOD, summary = "xxx动态分组统计直方图", parameters = {
@Parameter(name = "startDate", description = "开始日期,形如:2023-07-01"),
@Parameter(name = "endDate", description = "结束日期,形如:2023-07-10"),
@Parameter(name = "groupFields", description = "需要分组的字段名称,逗号分隔,形如“level,title”"),
@Parameter(name = "title", description = "标题")
})
@Login
@GetMapping("/xxxStatistics")
public Result<Map<String, List<StatisticsDO>>> xxxStatistics(
@RequestParam String startTime,
@RequestParam

文章描述了一个需求场景,用户可以通过前端选择动态分组字段,后端使用Mybatis的动态SQL进行分组查询。文章详细展示了如何在XxxStatisticsController和Xxx-statistics-info-mapper.xml中实现这个功能,包括参数接收和动态SQL构建。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



