Mybatis Plus LambdaQueryWrapper 可以使用 max、min 函数来查询最大值、最小值。

使用方法如下:

  1. 导入相关类:
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;
  1. 使用 LambdaQueryWrapper 的 lambda 表达式构建查询条件:
LambdaQueryWrapper<Entity> queryWrapper = Wrappers.lambdaQuery(Entity.class);
  1. 使用 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 的最大值和最小值

mybatis plus lamdbaQueryWrapper 使用最大值最小值函数

原文地址: https://www.cveoy.top/t/topic/dhIS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录