oracle分页
时间: 2023-07-03 16:26:42 浏览: 101
Oracle 中实现分页功能,可以使用 `ROWNUM` 和子查询来实现。以下是一个示例 SQL 语句:
```
SELECT * FROM (
SELECT t.*, ROWNUM rn FROM (
SELECT * FROM table_name ORDER BY id
) t
WHERE ROWNUM <= :endRow
)
WHERE rn >= :startRow
```
其中,`:startRow` 和 `:endRow` 是参数,表示要查询的数据范围。`table_name` 是要查询的表名,`id` 是用于排序的字段名。
这个 SQL 语句的逻辑是:先按照指定的排序方式查询出所有符合条件的数据,然后给每一条数据加上一个行号(即 `ROWNUM`),最后根据 `:startRow` 和 `:endRow` 来筛选出需要的数据。
以下是一个示例代码:
```java
public List<User> getUsers(int startRow, int endRow) {
String sql = "SELECT * FROM (SELECT t.*, ROWNUM rn FROM (SELECT * FROM user ORDER BY id) t WHERE ROWNUM <= ?) WHERE rn >= ?";
return jdbcTemplate.query(sql, new Object[]{endRow, startRow}, new UserMapper());
}
```
在这个例子中,`jdbcTemplate` 是 Spring 框架中的一个 JDBC 工具类,`UserMapper` 是一个自定义的 RowMapper 类,用于将查询结果映射为 User 对象。
阅读全文