在 Java 中实现 Oracle 分页查询时,需结合数据库特性与代码逻辑设计。以下是常见实现方式及对比:
一、数据库层实现分页
1. 使用 ROWNUM 伪列
- 原理:通过嵌套子查询动态生成行号,控制返回范围。
- 示例 SQL:
SELECT * FROM ( SELECT a.*, ROWNUM rnum FROM ( SELECT * FROM employees ORDER BY employee_id ) a WHERE ROWNUM <= 30 ) WHERE rnum > 20- 说明:内层排序,中间层限制最大行号,外层过滤起始行。
- 注意:
ROWNUM从 1 开始,不能直接用于等于判断,需嵌套查询避免逻辑错误。
2. 使用 OFFSET 和 FETCH(Oracle 12c+)
- 原理:通过
OFFSET跳过行数,FETCH限制返回行数,语法更简洁。 - 示例 SQL:
SELECT * FROM employees ORDER BY employee_id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY- 优点:代码直观,性能较好,适合新版本 Oracle。

最低0.47元/天 解锁文章
1346

被折叠的 条评论
为什么被折叠?



