|
在MyBatisPlus中查询记录数(COUNT)主要有以下几种方式,均基于QueryWrapper或LambdaQueryWrapper构建查询条件:
1. 基础计数查询
通过selectCount方法直接统计满足条件的记录数:
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1); // 条件:status=1
int count = userMapper.selectCount(wrapper); // 返回统计结果
2. 聚合函数计数
若需自定义COUNT表达式(如去重统计):
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("COUNT(DISTINCT dept_id) as dept_count"); // 去重统计部门数
List<Map<String, Object>> result = userMapper.selectMaps(wrapper);
Integer deptCount = (Integer) result.get(0).get("dept_count");
3. Lambda表达式写法
使用LambdaQueryWrapper避免硬编码字段名:
LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.eq(User::getAge, 25); // 条件:age=25
int count = userMapper.selectCount(lambdaWrapper);
4. 复杂条件组合
支持多条件嵌套(如AND/OR逻辑):
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("salary", 5000)
.and(qw -> qw.like("name", "张").or().like("email", "example.com"));
int count = userMapper.selectCount(wrapper);
注意事项
返回值类型:selectCount返回int,而selectMaps返回List<Map>需手动解析;
性能优化:大数据量时建议搭配索引使用,避免全表扫描;
分页统计:若需分页查询总数,需单独调用selectCount,分页插件不会自动触发计数。
如需完整项目示例,可参考MyBatisPlus官方文档或聚合函数使用指南。
|
|