mybatis为什么传一个page对象就实现分页查询了
时间: 2023-04-01 07:04:03 浏览: 74
Mybatis传递一个page对象,可以实现分页查询,是因为page对象中包含了分页查询所需的参数,如每页显示的记录数、当前页码等信息。Mybatis通过解析page对象中的参数,生成相应的SQL语句,从而实现分页查询。
相关问题
mybatis plus 自定义一个方法实现SQL server语句分页查询
如果你需要在 MyBatis-Plus 中自定义一个方法来执行 SQL Server 的分页查询,可以按照以下步骤操作:
1. 在 Mapper 接口中定义自定义方法,例如:
```java
List<User> selectUserListByPage(Page<User> page, @Param("status") Integer status);
```
2. 在 Mapper XML 文件中编写 SQL 语句,例如:
```xml
<select id="selectUserListByPage" resultType="com.example.User">
select * from (
select *, count(1) over() as total
from user
where status = #{status}
order by id
offset #{page.offset} rows
fetch next #{page.size} rows only
) t
</select>
```
在上面的 SQL 语句中,我们使用了 MyBatis-Plus 提供的分页参数 `#{page.offset}` 和 `#{page.size}`,并使用了 SQL Server 的 `OFFSET` 和 `FETCH` 语句来进行分页查询。
3. 在 Service 层中调用自定义方法,例如:
```java
Page<User> page = new Page<>(1, 10); // 查询第 1 页,每页 10 条记录
List<User> userList = userService.selectUserListByPage(page, 1); // 执行自定义 SQL 查询
long total = page.getTotal(); // 获取查询总数
```
在上面的代码中,我们首先创建了一个分页参数对象 `page`,然后调用自定义方法 `userService.selectUserListByPage(page, 1)` 进行分页查询,最后通过 `page.getTotal()` 获取查询总数。
通过以上步骤,我们就可以在 MyBatis-Plus 中自定义一个方法来执行 SQL Server 的分页查询了。
mybatis实现分页查询
要在MyBatis中实现分页查询,可以使用`RowBounds`或`PageHelper`插件。下面我将为你介绍这两种方法。
1. 使用`RowBounds`实现分页查询:
```java
int offset = (pageNum - 1) * pageSize; // 计算偏移量
RowBounds rowBounds = new RowBounds(offset, pageSize);
List<User> userList = sqlSession.selectList("getUserList", null, rowBounds);
```
在这个例子中,我们首先计算出需要跳过的记录数(即偏移量),然后创建一个`RowBounds`对象,传入偏移量和每页记录数。最后,我们使用`selectList`方法执行查询,并传入`RowBounds`对象作为参数。
2. 使用`PageHelper`实现分页查询:
首先,确保在你的项目中引入了`PageHelper`依赖。
在MyBatis的配置文件中添加以下配置:
```xml
plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 设置合理的参数 -->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
```
然后,在你的代码中使用`PageHelper.startPage()`方法来开启分页功能,并执行查询:
```java
int pageNum = 1; // 当前页码
int pageSize = 10; // 每页记录数
PageHelper.startPage(pageNum, pageSize);
List<User> userList = sqlSession.selectList("getUserList", null);
// 获取分页信息
PageInfo<User> pageInfo = new PageInfo<>(userList);
```
通过调用`PageHelper.startPage(pageNum, pageSize)`方法,你可以指定当前页码和每页记录数。然后,执行查询并获取结果列表。如果需要获取更多分页信息,你可以使用`PageInfo`对象。
这两种方法都可以实现分页查询,你可以根据自己的需求选择其中一种来使用。