MybatisPlus結(jié)合groupby實(shí)現(xiàn)分組和sum求和的步驟
?MybatisPlus結(jié)合groupby實(shí)現(xiàn)分組和sum求和
這次使用的是LambdaQueryWrapper
,使用QueryWrapper
相對(duì)來(lái)說(shuō)簡(jiǎn)單點(diǎn)就不寫(xiě)了
??實(shí)現(xiàn)GroupBy分組
第一步: 實(shí)體類中新增一個(gè)字段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; //這個(gè)地方 @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
}
]
??實(shí)現(xiàn)GroupBy分組之后再sum求和
第一步: 實(shí)體類中新增一個(gè)字段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; //這個(gè)地方 @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<>(); //這個(gè)地方新增了一個(gè)字段 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實(shí)現(xiàn)分組和sum求和的文章就介紹到這了,更多相關(guān)MybatisPlus分組sum求和內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jstl標(biāo)簽基礎(chǔ)開(kāi)發(fā)步驟(詳解)
下面小編就為大家?guī)?lái)一篇jstl標(biāo)簽基礎(chǔ)開(kāi)發(fā)步驟(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式
這篇文章主要介紹了Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07詳解Java使用JDBC連接MySQL數(shù)據(jù)庫(kù)
本文詳細(xì)講解了Java使用JDBC連接MySQL數(shù)據(jù)庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01如何在Java中創(chuàng)建線程通信的四種方式你知道嗎
開(kāi)發(fā)中不免會(huì)遇到需要所有子線程執(zhí)行完畢通知主線程處理某些邏輯的場(chǎng)景。或者是線程 A 在執(zhí)行到某個(gè)條件通知線程 B 執(zhí)行某個(gè)操作。下面我們來(lái)一起學(xué)習(xí)如何解決吧2021-09-09理解JDK動(dòng)態(tài)代理為什么必須要基于接口
這篇文章主要介紹了理解JDK動(dòng)態(tài)代理為什么必須要基于接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Java concurrency集合之ConcurrentSkipListSet_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListSet的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06解決idea每次新建項(xiàng)目都需要重新指定maven目錄
這篇文章主要介紹了解決idea每次新建項(xiàng)目都需要配置maven,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09