MybatisPlus結(jié)合groupby實現(xiàn)分組和sum求和的步驟
?MybatisPlus結(jié)合groupby實現(xiàn)分組和sum求和
這次使用的是LambdaQueryWrapper
,使用QueryWrapper
相對來說簡單點就不寫了
??實現(xiàn)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; }
返回的結(jié)果
[
{
"id": null,
"name": null,
"age": null,
"state": "1",
"count": 3
},
{
"id": null,
"name": null,
"age": null,
"state": "2",
"count": 2
}
]
??實現(xiàn)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; }
返回的結(jié)果
[
{
"id": null,
"name": null,
"age": null,
"state": "1",
"count": 3,
"ages": 6
},
{
"id": null,
"name": null,
"age": null,
"state": "2",
"count": 2,
"ages": 9
}
]
??總結(jié)
到此這篇關于MybatisPlus結(jié)合groupby實現(xiàn)分組和sum求和的文章就介紹到這了,更多相關MybatisPlus分組sum求和內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式
這篇文章主要介紹了Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07詳解Java使用JDBC連接MySQL數(shù)據(jù)庫
本文詳細講解了Java使用JDBC連接MySQL數(shù)據(jù)庫的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-01-01如何在Java中創(chuàng)建線程通信的四種方式你知道嗎
開發(fā)中不免會遇到需要所有子線程執(zhí)行完畢通知主線程處理某些邏輯的場景?;蛘呤蔷€程 A 在執(zhí)行到某個條件通知線程 B 執(zhí)行某個操作。下面我們來一起學習如何解決吧2021-09-09Java concurrency集合之ConcurrentSkipListSet_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java concurrency集合之ConcurrentSkipListSet的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06