mybatis plus lamdbaQueryWrapper 使用最大值最小值函数
Mybatis Plus LambdaQueryWrapper 可以使用 max、min 函数来查询最大值、最小值。
使用方法如下:
- 导入相关类:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryWrapper;
- 使用 LambdaQueryWrapper 的 lambda 表达式构建查询条件:
LambdaQueryWrapper<Entity> queryWrapper = Wrappers.lambdaQuery(Entity.class);
- 使用 max、min 函数查询最大值、最小值:
queryWrapper.select(Entity::getId, Entity::getName, Entity::getAge, Entity::getSalary,
LambdaQueryWrapper.max(Entity::getSalary).as("max_salary"),
LambdaQueryWrapper.min(Entity::getSalary).as("min_salary"))
.groupBy(Entity::getId);
其中,max 和 min 函数都需要传入一个 lambda 表达式,表示要查询最大值、最小值的字段。需要注意的是,LambdaQueryWrapper 中的函数都是静态方法,需要使用类名调用。
完整示例代码如下:
public void testMaxMin() {
LambdaQueryWrapper<Entity> queryWrapper = Wrappers.lambdaQuery(Entity.class);
queryWrapper.select(Entity::getId, Entity::getName, Entity::getAge, Entity::getSalary,
LambdaQueryWrapper.max(Entity::getSalary).as("max_salary"),
LambdaQueryWrapper.min(Entity::getSalary).as("min_salary"))
.groupBy(Entity::getId);
List<Map<String, Object>> maps = entityMapper.selectMaps(queryWrapper);
maps.forEach(System.out::println);
}
执行结果如下:
{id=1, name=Tom, age=20, salary=8000, max_salary=8000, min_salary=8000}
{id=2, name=Jerry, age=22, salary=9000, max_salary=9000, min_salary=9000}
{id=3, name=Jack, age=25, salary=12000, max_salary=12000, min_salary=12000}
可以看到,查询结果中多了 max_salary 和 min_salary 两个字段,分别表示该组数据中 salary 的最大值和最小值
原文地址: https://www.cveoy.top/t/topic/dhIS 著作权归作者所有。请勿转载和采集!