写点什么

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

作者:知识浅谈
  • 2023-12-09
    广东
  • 本文字数:1450 字

    阅读完需:约 5 分钟

🍁 作者:知识浅谈,CSDN 签约讲师,CSDN 博客专家,华为云云享专家,阿里云专家博主

📌 擅长领域:全栈工程师、爬虫、ACM 算法

💒 公众号:知识浅谈

🔥网站:vip.zsqt.cc


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

🎈实现 GroupBy 分组

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


@TableName(value ="user")@Datapublic 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")@Datapublic 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 知识浅谈

发布于: 刚刚阅读数: 5
用户头像

知识浅谈

关注

公众号:知识浅谈 2022-06-22 加入

🍁 作者:知识浅谈,InfoQ签约作者,CSDN博客专家/签约讲师,华为云云享专家,阿里云签约博主,51CTO明日之星 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥网站:vip.zsqt.cc

评论

发布
暂无评论
实用编程技巧:MybatisPlus结合groupby实现分组和sum求和_MyBatisPlus_知识浅谈_InfoQ写作社区