作者:常识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主
拿手范畴:全栈工程师、爬虫、ACM算法

✅MybatisPlus结合groupby完成分组和sum求和
这次运用的是LambdaQueryWrapper,运用QueryWrapper相对来说简单点就不写了

完成GroupBy分组

第一步: 实体类中新增一个字段count

@TableName(value ="user")
@Data
public class User implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @TableField(value = "name")
    private String name;
    @TableField(value = "age")
    private Integer age;
    @TableField(value = "state")
    private String state;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
	//这个当地
    @TableField(value = "count(*)",insertStrategy = FieldStrategy.NEVER,updateStrategy = FieldStrategy.NEVER)
    private  Integer count;
}

第二步:查询接口中修正

   @GetMapping("/count")
   public List<User> count(){
       new QueryWrapper<>()
       LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
       queryWrapper.select(User::getState,User::getCount);
       queryWrapper.groupBy(User::getState);
       List<User> list = userService.list(queryWrapper);
       return list;
   }

回来的成果

[
  {
    "id": null,
    "name": null,
    "age": null,
    "state": "1",
    "count": 3
  },
  {
    "id": null,
    "name": null,
    "age": null,
    "state": "2",
    "count": 2
  }
]

完成GroupBy分组之后再sum求和

第一步: 实体类中新增一个字段count

@TableName(value ="user")
@Data
public class User implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @TableField(value = "name")
    private String name;
    @TableField(value = "age")
    private Integer age;
    @TableField(value = "state")
    private String state;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    @TableField(value = "count(*)",insertStrategy = FieldStrategy.NEVER,updateStrategy = FieldStrategy.NEVER)
    private  Integer count;
	//这个当地
    @TableField(value = "sum(age)",insertStrategy = FieldStrategy.NEVER,updateStrategy = FieldStrategy.NEVER)
    private  Integer ages;
}

第二步:查询接口中修正

   @GetMapping("/count")
   public List<User> count(){
       new QueryWrapper<>()
       LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
       //这个当地新增了一个字段
       queryWrapper.select(User::getState,User::getCount,User::getAges);
       queryWrapper.groupBy(User::getState);
       List<User> list = userService.list(queryWrapper);
       return list;
   }

回来的成果

[
  {
    "id": null,
    "name": null,
    "age": null,
    "state": "1",
    "count": 3,
    "ages": 6
  },
  {
    "id": null,
    "name": null,
    "age": null,
    "state": "2",
    "count": 2,
    "ages": 9
  }
]

总结

大功告成,撒花称谢,关注我不走失,带你起飞带你富。
Writted By 常识浅谈

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。