Mybatis分页查询
时间: 2025-05-08 18:18:08 浏览: 22
### MyBatis 分页查询的实现方式
MyBatis 提供了多种分页查询的方式,以下是两种常见且有效的实现方法:
#### 方法一:基于数据库的分页查询
通过 SQL 的 `LIMIT` 和 `OFFSET` 子句可以手动实现分页逻辑。这种方式适用于大多数关系型数据库,例如 MySQL、PostgreSQL 等。
以下是一个基于 MySQL 数据库的手动分页查询示例[^1]:
```sql
SELECT * FROM table_name LIMIT #{pageSize} OFFSET #{offset};
```
在对应的 Mapper 文件中定义如下接口:
```java
public List<YourEntity> selectByPage(@Param("pageSize") int pageSize, @Param("offset") int offset);
```
调用时可以通过计算偏移量 (`offset`) 来获取指定页面的数据。
---
#### 方法二:使用 MyBatis 分页插件
MyBatis 官方推荐使用第三方分页插件(如 PageHelper),它可以简化分页操作并减少手写复杂 SQL 的工作量。该插件支持主流的关系型数据库,并能自动拦截 SQL 查询语句,在不修改原有 SQL 的情况下完成分页处理[^2]。
##### 配置步骤
1. **引入依赖**
如果项目使用 Maven 构建,则需在 `pom.xml` 中添加 PageHelper 插件的依赖项:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.0</version>
</dependency>
```
2. **配置插件**
在 MyBatis 的核心配置文件中注册 PageHelper 插件:
```xml
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 可选参数 -->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
```
3. **代码示例**
使用 PageHelper 进行分页查询非常简单,只需在执行查询前调用其静态方法即可:
```java
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
public PageInfo<YourEntity> queryByPage(int pageNum, int pageSize) {
// 设置分页参数
PageHelper.startPage(pageNum, pageSize);
// 执行查询
List<YourEntity> list = yourMapper.selectAll();
// 获取分页结果对象
return new PageInfo<>(list);
}
```
上述代码会返回一个包含分页信息的对象 `PageInfo`,其中不仅包含了当前页数据,还提供了总记录数、总页数等辅助信息。
---
### 总结
无论是采用原生 SQL 的手动分页还是借助于 PageHelper 插件,都可以满足不同场景下的分页需求。前者适合对性能有较高要求或者需要高度自定义的情况;后者则更适合快速开发和维护简单的分页功能。
阅读全文
相关推荐



















