mybatis-plus使用 LamadaQueryWrapper进行分租查询,求每组的某个字段最大值
时间: 2024-04-13 08:29:41 浏览: 121
对某一字段分组后,取出另一字段最大值的所有记录
5星 · 资源好评率100%
在 MyBatis-Plus 中,你可以使用 `LambdaQueryWrapper` 进行分组查询,并使用聚合函数 `MAX` 来求每组的某个字段的最大值。下面是一个示例代码:
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class MyService {
@Autowired
private BaseMapper<MyEntity> myMapper;
public List<Map<String, Object>> performGroupByQuery() {
LambdaQueryWrapper<MyEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.groupBy(MyEntity::getColumn1)
.select(MyEntity::getColumn1, "MAX(" + MyEntity::getColumn2 + ") as maxColumn2");
return myMapper.selectMaps(queryWrapper);
}
}
```
在上述示例中,我们使用 `LambdaQueryWrapper` 构建器来构建查询条件。首先,使用 `groupBy()` 方法指定需要分组的列,这里假设为 `column1`。然后,使用 `select()` 方法指定需要查询的列,并使用 `MAX()` 函数来求 `column2` 列的最大值,同时为结果起一个别名 `maxColumn2`。
最后,通过调用 `selectMaps()` 方法执行查询,并传入 `LambdaQueryWrapper` 对象。这样就可以执行分组查询,并获取每组某个字段的最大值结果。
需要注意的是,示例中的 `MyEntity` 类需要与数据库表对应,并且指定了映射关系。
希望对你有所帮助!
阅读全文