Mybatis实现:分页查询
accttodo 12/31/2023 MyBatis
目录
参考:
- 链接1:物理分页与逻辑分页 (opens new window)
- 链接2:Mybatis 数据库物理分页插件 PageHelper (opens new window)
- 链接3:浅析pagehelper分页原理 (opens new window)
- 链接3:mybatis高级应用系列一:分页功能 (opens new window)
# Mybatis实现:分页查询
# 一、物理分页与逻辑分页
- 物理分页
物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL
数据库提供了limit
关键字,程序员只需要编写带有limit
关键字的SQL
语句,数据库返回的就是分页结果。
- 逻辑分页
逻辑分页依赖的是程序员编写的代码。数据库返回的不是分页结果,而是全部数据,然后再由程序员通过代码获取分页数据,常用的操作是一次性从数据库中查询出全部数据并存储到List集合中,因为List集合有序,再根据索引获取指定范围的数据。
物理分页与逻辑分页对比
- 数据库负担:物理分页每次都访问数据库,逻辑分页只访问一次数据库,物理分页对数据库造成的负担大。
- 服务器负担:逻辑分页一次性将数据读取到内存,占用了较大的内容空间,物理分页每次只读取一部分数据,占用内存空间较小。
- 实时性:逻辑分页一次性将数据读取到内存,数据发生改变,数据库的最新状态不能实时反映到操作中,实时性差。物理分页每次需要数据时都访问数据库,能够获取数据库的最新状态,实时性强。
- 适用场合:逻辑分页主要用于数据量不大、数据稳定的场合,物理分页主要用于数据量较大、更新频繁的场合。
# 二、Mybatis的物理分页的实现
# 2.1 PageHelper插件
目前比较常见的方法是使用PageHelper插件:
PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper
PageHelper 文档地址:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown
浅析pagehelper分页原理:https://blog.csdn.net/qq_21996541/article/details/79796117
# 2.2 mybatis-paginator插件
mybatis-paginator项目地址:https://github.com/miemiedev/mybatis-paginator