发布时间:2026/7/31 19:02:52
Mybatis数据分页的多种实现方式详解 MyBatis 实现数据分页主要有以下几种方式1.SQL 分页手动分页在 SQL 语句中直接使用数据库特定的分页语法如 MySQL 的LIMIT和OFFSETOracle 的ROWNUM等。示例MySQLSELECT*FROMusersLIMIT#{offset}, #{pageSize};优点简单直接无需额外依赖。缺点需手动计算偏移量SQL 与数据库强绑定移植性差。2.RowBounds 分页逻辑分页MyBatis 内置的RowBounds类可在 Java 代码中指定分页参数RowBoundsrowBoundsnewRowBounds(offset,pageSize);ListUseruserssqlSession.selectList(UserMapper.selectAll,null,rowBounds);优点代码简洁无需修改 SQL。缺点先查询全量数据再内存分页大数据量时性能差。3.分页插件物理分页通过拦截器在 SQL 执行前动态添加分页逻辑如PageHelper主流方案。PageHelper 使用步骤添加依赖MavendependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion最新版本/version/dependency配置插件自动配置或手动ConfigurationpublicclassMyBatisConfig{BeanpublicPageInterceptorpageInterceptor(){returnnewPageInterceptor();}}业务代码中使用// 开启分页后续查询会自动添加分页逻辑PageHelper.startPage(pageNum,pageSize);ListUserusersuserMapper.selectAll();// 获取分页信息PageInfoUserpageInfonewPageInfo(users);优点透明化分页逻辑支持多种数据库性能优。缺点需引入依赖可能有版本兼容问题。4.自定义拦截器通过实现Interceptor接口自定义分页逻辑适用于复杂场景Intercepts({Signature(typeExecutor.class,methodquery,args{MappedStatement.class,Object.class,RowBounds.class,ResultHandler.class})})publicclassCustomPageInterceptorimplementsInterceptor{OverridepublicObjectintercept(Invocationinvocation)throwsThrowable{// 动态修改 SQL添加分页逻辑// ...returninvocation.proceed();}}5.流式查询大数据量分页使用 MyBatis 的CursorT接口逐行处理数据避免一次性加载全量数据try(CursorUsercursoruserMapper.selectByCursor()){for(Useruser:cursor){// 处理数据}}分页方案选择建议小数据量SQL 分页或 RowBounds。大数据量分页插件如 PageHelper或自定义拦截器。复杂场景自定义拦截器或流式查询。注意事项物理分页性能优于逻辑分页。分页插件可能影响复杂 SQL 的执行需谨慎使用。不同数据库的分页语法不同切换数据库时需注意兼容性。

相关新闻

2026/7/31 18:57:52

从Stitch、Lovable到Paico,为什么AI生成UI之前要充分理解需求

AI生成UI越来越快,但为什么很多结果还是不够用?这几年AI产品设计工具更新得特别勤,像Google Stitch、Paico这种能直接生成UI的,还有Lovable、v0这类帮你搞定应用开发的,确实把“脑子里有个想法”到“手里有个产品”的路…

2026/7/31 19:57:56

RTK外业成果怎么判断能不能用于正式成图?交付标准

夕阳下的内业焦虑 夕阳西下,测量员小王拖着疲惫的身体回到办公室,将RTK手簿里的坐标数据导入成图软件。屏幕上的点逐渐连成线,但他心里却有些打鼓:今天在城区采集的这些点,精度到底达不达标?能不能直接作为…

2026/7/31 19:52:55

大模型开发 (一)使用Llamafactory来微调qwen模型

大模型开发系统(一) 使用Llamafactory来微调qwen模型 首先介绍Llamafactory是一个开源、高效、易用的LLM微调框架, 由ModelScope社区推出。它支持多种主流开源大模型(如Qwen、Llama、ChatGLM、Baichuan等)的高效微调&a…

2026/7/29 22:32:30

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/31 0:01:11

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:01:11

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:01:11

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:38:56

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…