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é)
到此這篇關(guān)于MybatisPlus結(jié)合groupby實現(xiàn)分組和sum求和的文章就介紹到這了,更多相關(guān)MybatisPlus分組sum求和內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
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-09
Java concurrency集合之ConcurrentSkipListSet_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java concurrency集合之ConcurrentSkipListSet的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06

