Skip to main content

Group By

Use the Builder API to construct grouped queries as follows.

LambdaTemplate lambda = ...

List<User> result = null;
result = lambda.query(User.class)
.ge(User::getId, 100)
.le(User::getId, 500)
.groupBy(User::getStatus)
.selectAdd(User::getStatus)
.queryForList();
// selectAdd explicitly selects status; groupBy does not change projection
Equivalent SQL
select status from users where id >= 100 and id <= 500 group by status;

Aggregate functions

Group and sum
class UserGroupBy{
private String status;
private Long cnt;
...
}

LambdaTemplate lambda = ...

List<UserGroupBy> result = null;
result = lambda.query(User.class)
.ge(User::getId, 100)
.le(User::getId, 500)
.groupBy(User::getStatus)
.selectAdd(User::getStatus)
.applySelectAdd("count(*) as cnt")
.queryForList(UserGroupBy.class);
Equivalent SQL
select status, count(*) as cnt
from users
where id >= 100 and id <= 500
group by status;