mybatis的mapper实现oracle分页
时间: 2023-11-16 11:04:07 浏览: 165
Mybatis实现分页功能
5星 · 资源好评率100%
在 MyBatis 中,我们可以使用 `<select>` 标签的 `limit` 和 `offset` 属性来实现分页查询。
下面是一个使用 Oracle 数据库进行分页查询的示例:
```xml
<select id="selectByPage" parameterType="map" resultMap="resultMap">
select * from (
select rownum as row_num, t.* from (
select * from your_table
where your_condition
order by your_order
) t where rownum <= #{end}
) where row_num >= #{start}
</select>
```
其中,`#{start}` 和 `#{end}` 分别表示分页查询的起始行和结束行,它们可以通过计算得出:
```java
int pageSize = 10; // 每页显示的记录数
int pageNum = 2; // 当前页数
int start = (pageNum - 1) * pageSize + 1; // 起始行
int end = pageNum * pageSize; // 结束行
```
在上面的示例中,我们使用了 Oracle 数据库的 `rownum` 伪列来实现分页查询。在子查询中,我们先按照指定的条件和排序规则查询出所有符合条件的记录,然后再使用 `rownum` 伪列对它们进行编号。最后,在外层查询中,我们只返回指定范围内的记录。
注意,`rownum` 伪列的编号是在查询结果返回后才进行的,因此我们需要先对所有符合条件的记录进行排序,否则查询结果可能会出现错误。同时,由于 `rownum` 伪列的特殊性,我们需要使用两层子查询才能正确地实现分页查询。
阅读全文