实用编程技巧:MybatisPlus结合groupby实现分组和sum求和

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法

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

🎈实现GroupBy分组

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

kotlin 复制代码
@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;
}

第二步:查询接口中修改

sql 复制代码
   @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;
   }

返回的结果

json 复制代码
[
  {
    "id": null,
    "name": null,
    "age": null,
    "state": "1",
    "count": 3
  },
  {
    "id": null,
    "name": null,
    "age": null,
    "state": "2",
    "count": 2
  }
]

🎈实现GroupBy分组之后再sum求和

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

kotlin 复制代码
@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;
}

第二步:查询接口中修改

sql 复制代码
   @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;
   }

返回的结果

json 复制代码
[
  {
    "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 知识浅谈

相关推荐
JustHappy7 小时前
古法编程秘籍(二):什么是代码模块化?别背概念,把房间收拾明白就够了
前端·后端
小江的记录本7 小时前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
IT_陈寒10 小时前
Python闭包里藏的这个坑,差点让我加班到凌晨
前端·人工智能·后端
IT_陈寒10 小时前
Java注解空指针?这个坑我踩得莫名其妙
前端·人工智能·后端
土狗TuGou11 小时前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
数据库·笔记·后端·sql·mysql·oracle
ZengLiangYi11 小时前
React Query + REST API 最佳实践
javascript·后端·react.js
星浩AI11 小时前
项目实战:合同智能审批 · LangGraph + HITL 人机协同方案 [有源码]
后端·langchain·agent
JavaGuide11 小时前
Codex 接入第三方模型 DeepSeek、GLM、Kimi 教程:CC-Switch 和 Codex++ 两种方案对比
后端·ai编程
ZengLiangYi11 小时前
Fastify 加 Electron:把 Web 服务嵌进桌面应用
前端·javascript·后端
李白你好12 小时前
页面资产梳理 · 技术指纹识别 · Spring 端点探测
java·后端·spring