mybatisplus分组计数
时间: 2023-09-02 16:14:15 浏览: 107
在 MyBatis-Plus 中,可以使用 wrapper 条件构造器的 groupBy 和 selectCount 方法来实现分组计数。
示例如下:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("age, count(*) as cnt").groupBy("age");
List<Map<String, Object>> result = userMapper.selectMaps(wrapper);
```
上述代码中,使用 select 方法指定要查询的字段,其中包括需要分组的字段 age 和计数结果 cnt。然后使用 groupBy 方法指定按照 age 字段进行分组。最后使用 selectMaps 方法执行查询,并返回结果集。
注意需要在实体类中定义 age 字段的 get 方法,否则会报错。同时也需要在 UserMapper.xml 中添加相应的 SQL 语句,如下:
```xml
<select id="selectMaps" resultMap="BaseResultMap">
SELECT age, count(*) as cnt
FROM user
<where>
<if test="ew != null">
${ew.sqlSegment}
</if>
</where>
<if test="_parameter != null">
${ew.customSqlSegment}
</if>
GROUP BY age
</select>
```
其中 ${ew.customSqlSegment} 会被 MyBatis-Plus 自动替换为条件构造器中设置的条件语句。
阅读全文