若依框架mybatis分页失效,只能查出10条数据

2024-03-12 20:44

本文主要是介绍若依框架mybatis分页失效,只能查出10条数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题背景

在使用MyBatis-Plus进行项目开发时,遇到了分页查询功能失效的问题。具体表现是在执行分页查询后,始终只能获取到10条数据,同时返回的总记录数也不准确。经过排查发现,这是因为误用了selectVoList方法,该方法并不支持分页处理,返回的是未进行分页的ArrayList类型。

问题分析

首先,我们来看一下原代码片段:

// 启动分页
startPage();// 执行查询
List<SysExceptionLog> list = exceptionLogService.selectExceptionLogList(dto);// 将查询结果封装为TableDataInfo对象
return getDataTable(list);

服务端业务逻辑中,selectExceptionLogList方法的内容如下:

public List<SysExceptionLog> selectExceptionLogList(SysExceptionLogDTO dto) {// 构建查询条件LambdaQueryWrapper<SysExceptionLog> lqw = Wrappers.lambdaQuery();// ...(具体的查询条件)// 使用selectVoList方法进行查询,该方法不支持分页return exceptionLogMapper.selectVoList(lqw);
}

getDataTable方法则是将查询结果封装为前端需要的分页格式:

protected <T> TableDataInfo<T> getDataTable(List<T> list) {TableDataInfo<T> 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,并在查询前启动分页。

服务端代码调整
// 启动分页,传入当前页码和每页大小
Page<SysExceptionLog> page = new Page<>(dto.getPageNum(), dto.getPageSize());
startPage(page);// 调整selectExceptionLogList方法以返回IPage类型结果
IPage<SysExceptionLog> pageInfo = exceptionLogService.selectExceptionLogList(dto);// 将IPage对象传递给getDataTable方法
return getDataTable(pageInfo);

然后,修改selectExceptionLogList方法:

public IPage<SysExceptionLog> selectExceptionLogList(SysExceptionLogDTO dto) {LambdaQueryWrapper<SysExceptionLog> lqw = Wrappers.lambdaQuery();// ...(保持原有的查询条件不变)// 使用IPage作为返回类型,并进行分页查询return exceptionLogMapper.selectPage(page, lqw);
}

最后,更新getDataTable方法以便直接从IPage对象获取总记录数:

protected <T> TableDataInfo<T> getDataTable(IPage<T> pageInfo) {TableDataInfo<T> rspData = new TableDataInfo<>();rspData.setCode(HttpStatus.SUCCESS);rspData.setMsg("查询成功");rspData.setRows(pageInfo.getRecords()); // 分页查询结果集rspData.setTotal(pageInfo.getTotal()); // 正确的总记录数return rspData;
}

图解–debug

​​​​​​debug对比图

总结

通过以上调整,我们成功解决了MyBatis-Plus分页查询失效的问题,现在可以根据请求参数正确获取并返回带分页信息的数据。这再次强调了在使用ORM框架进行分页查询时,需确保使用支持分页特性的方法,并正确处理和返回分页相关的信息。

这篇关于若依框架mybatis分页失效,只能查出10条数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/802521

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2