queryWrapper在count时使用distinct

时间:2025-04-12 13:27:39

项目中某个查询需要使用到统计数量的功能,mybatis提供了count方法,但是,需求里需要对去重,需要用到distinct,如下格式:count(distinct KEY_)

SELECT COUNT(DISTINCT KEY_)
 FROM program
 WHERE (STATE_ = 4)

对应代码如下:

   QueryWrapper<Program> query = new QueryWrapper<>();
   query.select("distinct KEY_").lambda().eq(Program::getState, 4);
   int num = count(query);

调用count方法,生成的代码,自动会对select的字段添加count,非常好用。
另外,使用list方法也可以,只不过使用list方法时,需要在select中加上count()。代码如下:

query.select("count(distinct KEY_) ").lambda().eq(Program::getState, 4);

生成的sql也是一样的,大家可以根据自己的需求修改即可。