MyBatis 和 MyBatis-Plus 分页查询的区别

MyBatis-Plus的进阶:乐观锁和悲观锁、逻辑删除、分页和查询构造器 中的逻辑删除(Logical Delete)是在数据库中进行虚拟删除,即实际删除数据时,并不会将数据从数据库中删除,而是通过一个标记来记录其已被删除。这种删除方式称为逻辑删除或软删除。 阅读详情

MyBatis 和 MyBatis-Plus 分页查询的区别

MyBatis 和 MyBatis-Plus 都支持分页查询,但它们的实现方式和易用性有显著差异。以下是两者的主要区别:

1. 实现方式不同

MyBatis (使用 PageHelper)

  • 基于拦截器:通过拦截 SQL 语句动态修改为分页查询
  • 物理分页:生成带有 LIMIT 或 ROWNUM 的真实分页 SQL
  • 需要插件:必须集成 PageHelper 插件
// MyBatis + PageHelper 示例
PageHelper.startPage(1, 10);  // 第1页,每页10条
List<User> users = userMapper.selectList();
PageInfo<User> pageInfo = new PageInfo<>(users);

MyBatis-Plus

  • 内置分页:原生支持分页,无需额外插件
  • 接口统一:通过 IPage 接口实现
  • 配置简单:只需配置分页拦截器
// MyBatis-Plus 示例
Page<User> page = new Page<>(1, 10);  // 第1页,每页10条
IPage<User> userPage = userMapper.selectPage(page, null);

2. API 设计差异

特性MyBatis (PageHelper)MyBatis-Plus
分页启动方式PageHelper.startPage()创建 Page 对象
分页结果获取PageInfo 或 PageIPage 接口
分页参数方法参数对象属性
总记录数pageInfo.getTotal()page.getTotal()
当前页数据pageInfo.getList()page.getRecords()

3. 功能对比

MyBatis (PageHelper) 特点

  • 支持多种数据库方言
  • 支持多种分页方式(普通分页、计数分页等)
  • 支持 lambda 表达式写法
  • 需要手动处理分页参数传递

MyBatis-Plus 特点

  • 与 MyBatis-Plus 其他功能深度集成
  • 支持自动分页(无需手动调用分页方法)
  • 支持 XML 和注解两种方式的分页
  • 分页信息包含在返回对象中

4. 代码示例对比

MyBatis + PageHelper 实现

// 服务层
public PageInfo<User> getUsers(int pageNum, int pageSize) {
    PageHelper.startPage(pageNum, pageSize);
    List<User> users = userMapper.selectAll();
    return new PageInfo<>(users);
}

// Mapper接口
@Select("SELECT * FROM user")
List<User> selectAll();

MyBatis-Plus 实现

// 服务层
public IPage<User> getUsers(int pageNum, int pageSize) {
    Page<User> page = new Page<>(pageNum, pageSize);
    return userMapper.selectPage(page, null);
}

// Mapper接口
public interface UserMapper extends BaseMapper<User> {
    // 无需手动编写分页查询方法
}

5. 选择建议

  • 简单项目/已有 MyBatis 项目:使用 PageHelper 足够
  • 新项目/大量 CRUD 操作:推荐 MyBatis-Plus
  • 需要深度定制分页逻辑:PageHelper 更灵活
  • 追求开发效率:MyBatis-Plus 更简洁

MyBatis-Plus 的分页设计更加面向对象,与它的其他功能(如条件构造器)配合使用更加流畅,而 PageHelper 则更加轻量级且灵活。

mybatis-plus入门 用plus写条件部分,然后用sql写剩下的部分@Test//更新条件//定义条件//调用sql方法</update> 阅读详情

相关推荐

Java八股文面试全套真题【含答案】- MyBatis Plus 篇

MyBatis Plus 是什么?它与 MyBatis 有什么区别? 答:MyBatis Plus 是基于 MyBatis 进行扩展的一款持久层框架,它提供了一系列增强功能,简化了 MyBatis 的使用。与 MyBatis 相比,MyBatis Plus 提供了更多的便利特性,如自动生成代码、简化 CRUD 操作、分页查询等。

m0_47946173的博客 893

PageHelper和MyBatisPlus的IPage

如果你的项目只使用了MyBatis,而且对分页需求简单,可以选择PageHelper;Page分页类可以通过设置相应的属性来实现分页查询,一般是在数据库查询语句中加入分页参数,如limit语句或者rownum等,然后通过数据库查询结果计算出总记录数、总页数以及当前页的数据列表等信息,将这些信息封装到Page分页类中返回给调用者。在功能上,MyBatisPlus的IPage分页插件相对于PageHelper更加强大,提供了更多的功能和扩展,比如支持自定义分页逻辑、支持多种分页查询方式、支持排序和聚合查询等。

qq_63627983的博客 3862

Perplexity SPACE沙箱平台:安全AI开发环境实战解析

沙箱技术通过资源隔离和权限控制创建受限执行环境,其核心原理是容器化隔离机制。在AI开发领域,这种技术解决了环境配置复杂性和安全风险等关键问题。SPACE沙箱平台作为AI代码执行环境,提供了标准化的开发沙箱,支持Python生态和主流AI框架。通过实战案例展示,该平台特别适用于情感分析等NLP任务的快速原型验证,帮助开发者在安全隔离的环境中测试AI模型和算法,显著提升开发效率并降低系统风险。

weixin_29029995的博客 274

PageHelper与MyBatisPlus IPage分页插件的使用区别

Mybatis分页查询

brighthuacon的专栏 4528

手搓ZLMediaKit实现拉流推流系列3(RK3588上YOLO系列拉流、MPP解码+编码、推流全流程)

 前段时间比较忙,一直没有时间补充后续的内容。今天终于抽出空来,立马进入码字环节:手搓ZLMediaKit实现拉流推流系列在本篇也终于迎来了完结篇,在本篇文章中,你将看到以下一整套完整流程:使用ZLMediaKit拉流---MPP解码---Yolo模型进行推理---MPP编码并推流。

m0_46303486的博客 2174

MT4量化交易入门:手把手教你用MQL4编写第一个外汇EA(含完整代码)

本文详细介绍了如何使用MQL4在MT4平台上编写第一个外汇EA,涵盖从开发环境配置到均线交叉策略实现的完整流程。通过手把手教学和完整代码示例,帮助量化交易新手快速掌握外汇自动化交易的核心技术,实现高效的MT4量化交易系统。

mmm90的博客 527

详细分析Mybatis与MybatisPlus中分页查询的差异(附Demo)

本章节主要以Demo为例,直奔主题,对于更多的基本知识可看我的框架架构

码农研究僧的博客 1659

帕德伯恩大学轴承数据集(PU)介绍

PU数据集介绍一、帕德伯恩大学轴承数据集故障类别说明二、关于损伤描述2.1 损伤组合:2.2 重复和多重损伤的安排:2.3 几何尺寸2.4 损伤程度2.5损伤特征数据集损伤类别三、人为损坏轴承3.1 最常用的人为损伤制造方法是:3.2 本数据集使用的人工损坏是由三种不同方法引起的四、通过加速寿命试验产生真正的轴承损坏样本 一、帕德伯恩大学轴承数据集 数据集下载地址 从帕德伯恩大学获得的PU数据集是一个6203轴承数据集,包括人为诱发的和真实的损害。采用压电加速度计采集轴承座的振动信号,采样频率为64 kHz

m0_47180208的博客 3万+

pagehelper和mybatis-plus的分页功能

今天在一个新项目中了解到了新的分页插件:pagehelper。之前只学过mybatis-plus的分页插件,所以好奇在网上查阅了一些关于两者之间的区别和相似处。

qq_64497094的博客 1202

Python控制LitePoint IQxel-MW 无线网络测试仪

由于项目需要进行WIFI和BT(蓝牙)的射频测试,所以需要开发一款支持WIFI/BT射频测试的工具。开发射频测试工具的话那肯定离不开仪表的控制。我们项目用的就Litepoint的IQxel-MW无线网络测试仪。这篇文章主要就是介绍一下如何控制仪表以及实现的过程!LitePoint是美国硅谷的一家仪器厂商,主要做一些无线通讯测试仪表,包括WIFI,BT(Bluetooth),LTE等等。

xgh1951的博客 1万+

C#联合Halcon机器视觉框架源码

本软件参考EV开发,共用模块,基于WPF+Halcon,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。

Z's Palace 4829

MyBatis-Plus分页——PageHelper和IPage介绍

两个都用于分页,常用的应该是PageHelper了,理解了一下源码后发现IPage比PageHelper好用。 使用方法是 PageHelper.startPage()然后后边写sql就可以。 紧接着的一个sql起作用。 IPage则需要在dao层传入IPage的实现类Page对象,该对象实现了IPage。 区别: PageHelper内部原理是将传入的页码和条数赋值给了Page对象,保存到了一个本地线程ThreadLoacl中, 然后会进入Mybatis的拦截器中。然后再拦截器中获取本地线程中保.

bingguang1993的博客 4228

Linux 设置双网卡通信,外网网卡和内网网卡

背景,Linux 主机已经安装了内网、外网 2 张网卡,目前外网网络已通,需要设置内网网卡转发通内网 内网需要通信的设备的网段,如果 10.99.0.0 代表 10.99 网段的所有 IP 表示 10.xx 网段走 10.xx.xx.xx 这个网关转发 :内网网卡设备示例 2、设置启动自动生效 打开 文件,如果没有则创建该文件,然后在文件内写入如下的内容修改上面的语句 为 即可 示例...

简简单单Onlinezuozuo 6605

Mybatis-Plus的分页查询中,Page与IPage的区别

public IPage<User> findUserByPageAndId(Integer currentPageNum, Integer pageSize, Long userId) { Page<UserInfo> page = new Page<>(currentPageNum, pageSize); return mapper.findUserBySQL(page, userId); } Page用于定义每页的规格 IPage以规格和其他内容为

HellHellNo的博客 1万+

CloudCompare 和 PCL:点云网格化分析与处理

点云网格化是将点云数据转化为规则网格的过程,其主要思想是将离散的点云投影到一个平面上,然后对该平面进行划分,形成一系列小区域。在点云网格化方面,PCL 提供了各种算法和工具,可以实现高效的点云网格化操作。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化算法参数,如搜索半径和最大三角形边长等,执行了网格化操作,最后将网格化结果保存到输出文件中。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化参数,如分辨率等,执行了网格化操作,最后将网格化结果保存到输出文件中。

TechPulseZ的博客 1291

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【Mybatis-Plus】分页简单使用

【Mybatis-Plus】分页简单使用

人类所有真实的快乐,一定是恒久的努力 9万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

分页查询中IPage和Page区别

IPage和Page都是 MyBatis-Plus 中的类。

qq_56947957的博客 808

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mybatis/mybatisplus

1.什么是2.核心组件(3)Mapper接口(4)Mapper XML 文件3.配置文件4.映射文件(1)SQL语句(2)参数映射(3) 结果映射5.动态SQL(1)if:条件判断。代码(2)choose (when, otherwise):多条件选择。代码(3)where:自动处理 AND 和 OR 关键字。代码(4)set:自动处理 SET 关键字。代码(5):遍历集合。代码6.缓存机制(1)一级缓存什么是代码(2)二级缓存什么是代码7. 优点8.插件机制什么是代码。

m0_73757039的博客 1517

Mybatis-plus入门与使用

##1 mybatis-plus简介 mybatis-plus是增强版的mybatis,它继承mybatis所有的特性,不做改变,为简化开发、提高效率而生的。 ##2 mybatis与mybatis-plus的区别 2.1mybatis特点 2.2mybatis-plus特点 3 springboot整合mybais-plus 3.1 创建数据库(数据库为user) 3.2springboo...

weixin_45021403的博客 320

Mybatis Plus

或Redirect对数据库的crud操作封装起来,不用我们书写只需让接口映射继承BaseMapper即可,<>泛型中就是要操作的数据库表对应的实体类如user表入门使用时引入mp依赖,定义配置文件即可目前我们使用MP自带的分页插件可以很友好的实现分页查询操作,但是如果一些查询需要我们自定义SQL,那该如何实现分页查询操作呢?1自定义接口中直接传入Page分页对象即可;//@Mapper/*** 查询大于指定id的用户信息,并分页查询实现* @return*/2定义xml映射文件。

weixin_62951529的博客 1789

mybatis-plus的基本使用

(简称 MP)是一个的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

weixin_42376775的博客 425

Java八股文——MyBatis篇

本文总结了Java面试中常见的与MyBatis相关的面试题,包括MyBatis、MyBatis-Plus,面试问题持续更新。

郎逸的博客 1171

详细梳理 MyBatis-Plus 的 QueryWrapper 和 LambdaQueryWrapper的入门到精通

方法说明示例eq等于eq(“name”, “张三”) → name = ‘张三’ne不等于gt大于ge大于等于lt小于le小于等于between区间like模糊匹配like(“name”, “三”)likeLeft左模糊likeLeft(“name”, “三”) → name LIKE ‘%三’likeRight右模糊likeRight(“name”, “三”) → name LIKE ‘三%’in IN查询notInNOT IN。

tigerhhzz的博客 2825

Mybatis-plus EntityWrapper

一://我们需要分页查询tbl_employee表中,年龄在18~50之间且性别为男且姓名为Tom的所有用户 List<Employee> emps =employeeMapper.selectPage(new Page<Employee>(1, 2), new EntityWrapper<Employee>() .between("age", 18, 50) .eq("gender", 1) .eq("last_name

Be_With_I的博客 527

Mybatis-plus 快速入门

Mybatis-plus 快速入门

⛄ 1795

mybatis-plus基础知识

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,

2401_84009929的博客 489
上一篇: DockerClient客户端
下一篇: WebSocket在Java中的应用
bindabin
博客等级 码龄6年 17粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值