设计网站 杭州,seo关键词排名优化怎样收费,海口高风险地区,网络功能设计问题背景
在使用MyBatis-Plus进行项目开发时#xff0c;遇到了分页查询功能失效的问题。具体表现是在执行分页查询后#xff0c;始终只能获取到10条数据#xff0c;同时返回的总记录数也不准确。经过排查发现#xff0c;这是因为误用了selectVoList方法#xff0c;该方法…问题背景
在使用MyBatis-Plus进行项目开发时遇到了分页查询功能失效的问题。具体表现是在执行分页查询后始终只能获取到10条数据同时返回的总记录数也不准确。经过排查发现这是因为误用了selectVoList方法该方法并不支持分页处理返回的是未进行分页的ArrayList类型。
问题分析
首先我们来看一下原代码片段
// 启动分页
startPage();// 执行查询
ListSysExceptionLog list exceptionLogService.selectExceptionLogList(dto);// 将查询结果封装为TableDataInfo对象
return getDataTable(list);服务端业务逻辑中selectExceptionLogList方法的内容如下
public ListSysExceptionLog selectExceptionLogList(SysExceptionLogDTO dto) {// 构建查询条件LambdaQueryWrapperSysExceptionLog lqw Wrappers.lambdaQuery();// ...具体的查询条件// 使用selectVoList方法进行查询该方法不支持分页return exceptionLogMapper.selectVoList(lqw);
}而getDataTable方法则是将查询结果封装为前端需要的分页格式
protected T TableDataInfoT getDataTable(ListT list) {TableDataInfoT rspData new TableDataInfo();rspData.setCode(HttpStatus.SUCCESS);rspData.setMsg(查询成功);rspData.setRows(list);// 试图通过PageInfo计算总记录数但由于list不是分页查询结果所以total值不准确rspData.setTotal(new PageInfo(list).getTotal());return rspData;
}解决方案
为了解决这个问题我们需要对selectExceptionLogList方法进行调整使其支持分页查询。首先需要将查询方法的返回类型改为MyBatis-Plus提供的IPage接口的实现类如Page并在查询前启动分页。
服务端代码调整
// 启动分页传入当前页码和每页大小
PageSysExceptionLog page new Page(dto.getPageNum(), dto.getPageSize());
startPage(page);// 调整selectExceptionLogList方法以返回IPage类型结果
IPageSysExceptionLog pageInfo exceptionLogService.selectExceptionLogList(dto);// 将IPage对象传递给getDataTable方法
return getDataTable(pageInfo);然后修改selectExceptionLogList方法
public IPageSysExceptionLog selectExceptionLogList(SysExceptionLogDTO dto) {LambdaQueryWrapperSysExceptionLog lqw Wrappers.lambdaQuery();// ...保持原有的查询条件不变// 使用IPage作为返回类型并进行分页查询return exceptionLogMapper.selectPage(page, lqw);
}最后更新getDataTable方法以便直接从IPage对象获取总记录数
protected T TableDataInfoT getDataTable(IPageT pageInfo) {TableDataInfoT rspData new TableDataInfo();rspData.setCode(HttpStatus.SUCCESS);rspData.setMsg(查询成功);rspData.setRows(pageInfo.getRecords()); // 分页查询结果集rspData.setTotal(pageInfo.getTotal()); // 正确的总记录数return rspData;
}图解–debug
debug对比图
总结
通过以上调整我们成功解决了MyBatis-Plus分页查询失效的问题现在可以根据请求参数正确获取并返回带分页信息的数据。这再次强调了在使用ORM框架进行分页查询时需确保使用支持分页特性的方法并正确处理和返回分页相关的信息。