mybatisplus distinct
时间: 2025-05-16 14:49:23 浏览: 9
### MyBatisPlus 中的 Distinct 查询实现
在 MyBatisPlus 中,可以通过 `QueryWrapper` 提供的方法来构建复杂的查询条件,其中包括去重查询的功能。具体来说,可以利用 `select()` 方法指定需要查询的字段,并结合 SQL 的 `DISTINCT` 关键字完成去重操作。
以下是基于 MyBatisPlus 实现去重查询的一个完整示例:
```java
public Set<String> selectDistinctIndustryNameList() {
QueryWrapper<AiEmployeeStatisticDO> queryWrapper = new QueryWrapper<>();
// 设置查询字段并使用 DISTINCT 去重
queryWrapper.select("DISTINCT(industry_name)");
// 添加其他过滤条件(例如 deleted 字段等于 0)
queryWrapper.eq("deleted", 0);
// 执行查询获取结果列表
List<AiEmployeeStatisticDO> resultList = employeeStatisticDAO.selectList(queryWrapper);
// 将结果映射为行业名称集合
return resultList.stream()
.map(AiEmployeeStatisticDO::getIndustryName)
.filter(Objects::nonNull) // 过滤掉可能存在的 null 值
.collect(Collectors.toSet());
}
```
上述代码展示了如何通过 `QueryWrapper` 构建带有 `DISTINCT` 的查询语句[^2]。其中的关键在于调用 `queryWrapper.select()` 方法时传入带 `DISTINCT` 的字段名字符串表达式。
---
#### 注意事项
1. **字段选择**
在执行 `DISTINCT` 查询时,应仅选择必要的字段以减少不必要的计算开销。如果选择了多个字段,则会针对这些字段组合的结果进行去重处理。
2. **返回值类型转换**
上述例子中,最终将查询结果转化为一个 `Set<String>` 集合形式以便于后续逻辑使用。需要注意的是,在某些情况下可能会遇到重复记录被错误标记的情况,因此建议对返回的数据进一步验证其唯一性。
3. **性能考量**
虽然 MyBatisPlus 提供了便捷的方式支持复杂查询功能,但在实际项目开发过程中仍需关注底层 SQL 性能表现。对于大规模数据集上的 `DISTINCT` 操作尤其如此,因为它可能导致较高的资源消耗和较慢响应时间[^1]。
---
###
阅读全文
相关推荐


















