Mybatis中物理分页与逻辑分页

什么是物理分页和逻辑分页

1.物理分页

物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果。

2.逻辑分页(内存分页)

逻辑分页依赖的是程序员编写的代码。数据库返回的不是分页结果,而是全部数据,然后再由程序员通过代码获取分页数据,常用的操作是一次性从数据库中查询出全部数据并存储到List集合中,因为List集合有序,再根据索引获取指定范围的数据。

 

两者的对比

1.数据库负担

物理分页每次都访问数据库,逻辑分页只访问一次数据库,物理分页对数据库造成的负担大。
2.服务器负担

逻辑分页一次性将数据读取到内存,占用了较大的内容空间,物理分页每次只读取一部分数据,占用内存空间较小。

3.实时性

逻辑分页一次性将数据读取到内存,数据发生改变,数据库的最新状态不能实时反映到操作中,实时性差。物理分页每次需要数据时都访问数据库,能够获取数据库的最新状态,实时性强。

4.适用场合

逻辑分页主要用于数据量不大、数据稳定的场合,物理分页主要用于数据量较大、更新频繁的场合。

 

MyBatis使用RowBounds实现的分页是逻辑分页,也就是先把数据记录全部查询出来,然在再根据offset和limit截断记录返回(数据量大的时候会造成内存溢出),不过可以用插件或其他方式能达到物理分页效果。

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 MyBatis-Plus 是 MyBatis 的增强版,具备诸多实用功能,像自动执行 CRUD 操作、构建条件语句、生成动态 SQL 等,其中分页查询功能对于处理海量数据十分关键。 数据库分页查询有物理分页逻辑分页两种形式。物理分页是在数据库层面完成的,借助像 MySQL 中的 “LIMIT” “OFFSET” 这样的特定语法(SQL Server 则是 “TOP” “SKIP” 等)来限定返回的数据条数,它只获取所需数据,占用内存少,能及时反映数据库的变动,适合数据量大且更新频繁的情况;逻辑分页则是先将全部数据加载到应用程序里,再由程序来进行分页处理,虽然只需从数据库读取一次数据,但当数据量庞大时,会占用大量内存,且无法获取数据库最新的状态,适用于数据量小且变动不频繁的场景。 在 MyBatis-Plus 中,要实现分页查询,需配置分页插件 “PaginationInterceptor”。以下是一个基于 Spring Boot 的配置示例代码: 配置好后,MyBatis-Plus 会自动处理分页相关逻辑MyBatis-Plus 提供了两种主要的分页查询方式,都以 “IPage” 对象 “Wrapper” 包装器作为参数。一是 “selectPage” 方法,返回实体类型的 “IPage” 对象,用于存放分页结果,涵盖当前页数据分页信息;二是 “selectMapsPage” 方法,返回包含 Map 的 “IPage” 对象,Map 的键是列名,值是对应的列值,适用于查询结果包含多种类型字段的情况。下面是一个简单的分页查询示例代码: 在上述代码里,“QueryWrapper” 用于构建 SQL 查询条件,“Page” 用于存储分页相关参数。执行时,会先执行计数查询来获
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值