mybatis 使用Page 分页
时间: 2023-10-31 11:26:47 浏览: 116
可以使用 MyBatis 自带的分页插件,也可以使用第三方的分页插件,如 PageHelper。在使用 MyBatis 自带的分页插件时,需要在查询语句中添加分页的参数,如:limit start, count。其中,start 表示起始行,count 表示需要查询的行数。在添加分页插件后,使用 Mapper 方法查询时会自动按照分页参数进行分页查询。
相关问题
mybatis使用pagehelper分页
MyBatis 是一个优秀的持久层框架,而 PageHelper 是一个用于 MyBatis 的分页插件。使用 PageHelper 可以方便地实现分页功能。下面是使用 PageHelper 进行分页的步骤:
1. 添加依赖:在项目的 `pom.xml` 文件中添加以下依赖:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>latest-version</version>
</dependency>
```
可以在 Maven 仓库中找到最新版本的 PageHelper。
2. 配置 PageHelper:在 MyBatis 的配置文件中添加以下配置项:
```xml
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 可选:设置数据库方言,用于支持不同数据库的分页 -->
<property name="dialect" value="mysql"/>
<!-- 可选:设置为 true 启用合理化查询,开启后,如果 pageSize=0 或者 PageMethod 的 `count` 参数为 true,则会查询总数 -->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
```
注意:根据你所使用的数据库类型,需要将 `dialect` 属性配置为相应的数据库方言。
3. 使用 PageHelper 进行分页:在需要进行分页的查询方法中,使用 PageHelper 的静态方法来设置分页参数,例如:
```java
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
// ...
// 设置分页参数,pageNum 表示当前页数,pageSize 表示每页显示的记录数
PageHelper.startPage(pageNum, pageSize);
// 执行查询
List<MyEntity> resultList = myEntityMapper.selectByExample(example);
// 封装查询结果,并返回给前端
PageInfo<MyEntity> pageInfo = new PageInfo<>(resultList);
return pageInfo;
```
这样就完成了使用 PageHelper 进行分页的配置和使用。PageHelper 会自动在查询语句后面添加分页的 SQL 语句,根据传入的分页参数进行数据查询和结果封装。返回的 `PageInfo` 对象可以用于获取分页相关的信息,如总记录数、总页数等。
mybatis使用sql分页
### MyBatis 中使用 SQL 进行分页
#### 插入 PageHelper 依赖
为了在 MyBatis 中实现高效的数据库端分页,推荐引入 `PageHelper` 库。该库能够简化分页操作并提高性能[^3]。
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
```
#### 配置 PageHelper
通常情况下,在 Spring Boot 或其他框架中配置 `PageHelper` 只需简单几步即可完成设置。对于自定义的数据源配置类,则应特别注意采用新的 jdbc-url 参数而非旧版 url 来指定数据库连接字符串[^2]。
#### 实现分页查询的方法
当执行分页查询时,可以在 Mapper 接口前调用 `PageHelper.startPage()` 方法设定当前页码以及每页大小:
```java
import com.github.pagehelper.PageHelper;
import java.util.List;
public List<User> selectUsersWithPagination(int pageNum, int pageSize){
// 设置分页参数
PageHelper.startPage(pageNum, pageSize);
// 执行查询语句
return userMapper.selectAll();
}
```
此方式下,实际发送给数据库的 SQL 将自动附加 LIMIT 和 OFFSET 子句以达到物理分页的效果,从而避免一次性加载过多数据到内存中造成资源浪费。
#### 动态 SQL 的应用
除了基本的 CRUD 操作外,MyBatis 支持编写复杂的动态 SQL 片段用于构建灵活多变的查询条件。这使得即使是在分页场景里也能轻松应对各种业务需求[^4]。
例如,可以通过 `<if>` 标签有条件地加入 WHERE 子句或其他过滤项;利用 `<foreach>` 循环遍历集合作为 IN 查询的一部分等等。
```xml
<select id="selectUsersByConditions" resultType="User">
SELECT * FROM users u
<where>
<if test="name != null and name != ''">AND u.name LIKE #{name}</if>
<!-- 更多条件 -->
</where>
ORDER BY u.id DESC
</select>
```
上述代码片段展示了如何根据传入的名字参数决定是否添加匹配名字这一约束条件至最终生成的 SQL 文本之中。
阅读全文
相关推荐














