mybatis 如何分页
时间: 2023-10-22 22:29:41 浏览: 105
Mybatis实现分页功能
5星 · 资源好评率100%
在MyBatis中实现分页可以通过两种方式:使用插件或者手动编写分页逻辑。
1. 使用插件:
MyBatis提供了一个名为PageHelper的插件,可以简化分页操作。首先需要在项目中引入PageHelper依赖,然后在MyBatis的配置文件中配置插件:
```xml
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
```
在需要分页的查询方法中,只需要在查询之前设置分页参数,然后调用PageHelper.startPage()方法即可:
```java
// 设置分页参数
int pageNum = 1; // 当前页码
int pageSize = 10; // 每页显示条数
// 调用分页方法
PageHelper.startPage(pageNum, pageSize);
// 执行查询
List<User> userList = userDao.getUserList(); // 示例代码,需根据实际情况替换
// 获取分页结果
PageInfo<User> pageInfo = new PageInfo<>(userList);
// 分页结果包含了分页信息和查询结果
long total = pageInfo.getTotal(); // 总记录数
List<User> pageData = pageInfo.getList(); // 当前页的数据
```
2. 手动编写分页逻辑:
如果不使用插件,也可以手动编写分页逻辑。在查询方法中,需要传入分页参数(当前页码和每页显示条数),然后在SQL语句中使用LIMIT关键字进行分页:
```java
int start = (pageNum - 1) * pageSize; // 计算起始索引
// 执行分页查询
List<User> userList = userDao.getUserListByPage(start, pageSize); // 示例代码,需根据实际情况替换
// 查询总记录数
long total = userDao.getUserCount(); // 示例代码,需根据实际情况替换
// 计算总页数
int totalPages = (int) Math.ceil((double) total / pageSize);
// 分页结果包含了分页信息和查询结果
List<User> pageData = userList; // 当前页的数据
```
在SQL语句中添加LIMIT子句时,可以使用数据库提供的分页函数(如MySQL的LIMIT)或者使用ROWNUM(如Oracle)等方式来实现分页。具体的SQL语句需要根据数据库的不同进行调整。
以上是两种常用的实现分页的方式,你可以根据项目需求选择适合的方式。
阅读全文