QueryWrapper查时间最新的一条数据
时间: 2023-07-15 16:15:39 浏览: 148
可以使用 QueryWrapper 的 orderByDesc 方法来按时间倒序排序,然后使用 last 方法获取最新的一条数据。示例代码如下:
```java
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("create_time").last("limit 1");
Entity entity = entityMapper.selectOne(queryWrapper);
```
其中,`Entity` 是要查询的实体类,`create_time` 是按照时间排序的字段名,`entityMapper` 是实体类对应的 Mapper 接口。`last("limit 1")` 表示只返回一条数据,即最新的一条数据。
相关问题
mybatis用 Wrapper 查询时间最大的一条
可以使用 Mybatis-plus 提供的 QueryWrapper 类来进行时间最大的一条数据查询,示例代码如下:
```
QueryWrapper<Entity> queryWrapper = new QueryWrapper<Entity>()
.orderByDesc("create_time")
.last("limit 1");
Entity entity = entityMapper.selectOne(queryWrapper);
```
mybatisplus分组后查询每组最新一条数据
可以通过Mybatis Plus的Lambda QueryWrapper和子查询来实现分组后查询每组最新一条数据的功能。具体实现步骤如下:
1. 构建Lambda QueryWrapper对象,设置分组条件和排序条件:
```
QueryWrapper<Entity> wrapper = new QueryWrapper<>();
wrapper.select("group_id", "max(create_time) as create_time")
.groupBy("group_id")
.orderByDesc("create_time");
```
2. 构建子查询,查询每组最新一条数据的id:
```
QueryWrapper<Entity> subWrapper = new QueryWrapper<>();
subWrapper.select("id")
.inSql("concat(group_id, '_', create_time)",
"select concat(group_id, '_', max(create_time)) from entity group by group_id");
```
3. 根据子查询构建Lambda QueryWrapper对象,查询每组最新一条数据的详细信息:
```
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id", subWrapper);
List<Entity> entityList = entityMapper.selectList(queryWrapper);
```
其中,第1步中的select语句中,group_id为分组字段,create_time为时间字段,max(create_time)表示获取每组中最新的一条数据的时间。orderByDesc("create_time")表示按时间倒序排列,确保每组最新的一条数据排在最前面。
第2步中的子查询中,concat(group_id, '_', create_time)表示将group_id和create_time拼接成一个字符串,以便后面使用inSql函数查询。
第3步中的in函数中,将子查询的结果作为参数传入,查询每组最新的一条数据的详细信息。
这样就可以实现分组后查询每组最新一条数据的功能了。