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

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:通过内置分页插件提供标准化、便捷的分页操作,适合快速开发,减少重复代码。

相关文章:

  • AWS API Gateway灰度验证实现
  • 对于邮箱地址而言,短中划线(Hyphen, -)和长中划线(Em dash, —)有区别吗
  • 计算机毕业设计SpringBoot+Vue.js房屋租赁管理系统(源码+文档+PPT+讲解)
  • LSTM长短期记忆网络-原理分析
  • uniapp中使用leaferui使用Canvas绘制复杂异形表格的实现方法
  • 【工具】前端 js 判断当前日期是否在当前自然周内
  • 如何更改vim命令创建代码文件时的默认模板
  • 【Go】十七、grpc 服务的具体功能编写
  • 核弹级技术革命——搭配deepseek-r1满血版的腾讯云ai助手(codex)仅用14天独立开发出适配ARM架构的微内核操作系统!
  • python 学习笔记
  • 《 C++ 点滴漫谈: 二十七 》告别低效!C++ 输入输出操作你真的会用吗?
  • Apache Tomcat RCE 稳定复现 保姆级!(CVE-2024-50379)附视频+POC
  • Git:多人协作
  • 什么是 Netty
  • git从零学起
  • Windows用户如何零成本迁移Sketch项目?2025实测方案推荐
  • APISIX Dashboard上的配置操作
  • 本地快速搭建一套AI人脸识别技术研究学习的实验环境
  • 【Yonghong GoldenDB 】GoldenDB 安装部署
  • 深度学习-10.门控循环网络
  • 政府类网站建设费用/申请一个网站
  • 做网站构架用什么软件/网店推广方法
  • 网站模板免费下载代码/全网营销推广公司
  • 免费com域名注册网站/自助建站申请
  • 做粘土的网站/广告推广图片
  • 台中网站建设/郴州网站建设网络推广渠道