当前位置: 首页 > article >正文

Mybatis是如何进行分页的?与Mybatis-plus的区别在哪里?

MyBatis 的分页方式及其与 MyBatis-Plus 的区别可以总结如下:

MyBatis 的分页实现

  1. 逻辑分页(内存分页)
    使用 RowBounds 对象,在查询时传入参数,MyBatis 会在结果集返回后,在内存中手动截取指定范围的数据。
    缺点:数据量大时性能差,需查询全部数据后再分页,浪费内存和网络资源。
    示例

    List<User> users = sqlSession.selectList("getUsers", null, new RowBounds(10, 5));
    
  2. 物理分页(SQL 分页)

    • 手动拼接 SQL:在 SQL 中直接编写分页语法(如 MySQL 的 LIMIT offset, size)。
      缺点:需针对不同数据库适配 SQL,代码冗余。
    • 使用插件(如 PageHelper)
      通过拦截器自动修改 SQL,添加分页参数。
      示例
      PageHelper.startPage(2, 10); // 第2页,每页10条
      List<User> users = userMapper.selectAll();
      PageInfo<User> pageInfo = new PageInfo<>(users);
      

MyBatis-Plus 的分页实现

  1. 内置物理分页插件
    配置 PaginationInterceptor 拦截器后,直接使用 Page 对象和 selectPage() 方法实现分页。
    特点
    • 自动生成分页 SQL(适配不同数据库)。
    • 封装分页结果(含数据列表、总记录数、总页数等)。
      示例
    Page<User> page = new Page<>(2, 10); // 第2页,每页10条
    IPage<User> result = userMapper.selectPage(page, queryWrapper);
    

MyBatis 与 MyBatis-Plus 的分页区别

特性MyBatisMyBatis-Plus
分页方式需手动实现(逻辑分页或物理分页)。内置物理分页,开箱即用。
SQL 处理依赖插件(如 PageHelper)或手动拼接 SQL。自动生成适配不同数据库的分页 SQL。
结果封装需手动处理总记录数等分页信息。自动封装分页结果到 Page 对象。
代码简洁性需编写更多模板代码。通过 API 简化操作,与 CRUD 深度集成。
多数据库支持需自行处理不同数据库的分页语法差异。内置多方言支持,自动适配。

总结

  • MyBatis:灵活性高,但分页需依赖第三方插件或手动处理,代码较为繁琐。
  • MyBatis-Plus:通过内置分页插件提供标准化、便捷的分页操作,适合快速开发,减少重复代码。

http://www.kler.cn/a/569513.html

相关文章:

  • 【服务器】Nginx
  • 【AD】3-10 原理图PDF导出
  • 力扣hot 100之矩阵四题解法总结
  • 盛京开源社区加入 GitCode,书写东北开源生态新篇章
  • javascript实现雪花飘落效果
  • 基于SpringBoot的校园体育场馆(设施)使用管理网站设计与实现现(源码+SQL脚本+LW+部署讲解等)
  • driver中为什么要使用非阻塞赋值
  • 使用Vant-ui封装form移动端组件
  • 【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第2章OpenHarmony v3.2-Beta4版本测试
  • DeepSeek实操教程(清华、北大)
  • 不同规模企业如何精准选择AI工具: DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具深度剖析与对比
  • c# winform程序 vs2022 打包生成安装包
  • 【AGI】DeepSeek开源周:The whale is making waves!
  • 10分钟掌握!如何在Linux系统中实现无密码使用私钥SSH远程连接
  • 脑机接口SSVEP经典算法 ITCCA个体模板典型相关分析 matlab实战
  • 开源项目Wren AI 文本到SQL解决方案详解
  • 浙江大学《程序设计入门-c语言》第一周笔记
  • 游戏引擎学习第126天
  • 7. 从网络获取数据
  • 深入理解Reactor Flux的生成方法