java 实现 oracle 分页查询
时间: 2023-10-19 14:20:43 浏览: 87
以下是Java实现Oracle分页查询的示例代码:
```java
import java.sql.*;
public class OraclePagination {
public static void main(String[] args) throws SQLException {
// 定义分页参数
int pageNo = 1; // 页码
int pageSize = 10; // 每页记录数
// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "username", "password");
PreparedStatement stmt = null;
ResultSet rs = null;
try {
// 查询总记录数
String countSql = "SELECT COUNT(*) FROM table_name";
stmt = conn.prepareStatement(countSql);
rs = stmt.executeQuery();
int totalRecord = 0;
if (rs.next()) {
totalRecord = rs.getInt(1);
}
rs.close();
stmt.close();
// 计算总页数
int totalPage = totalRecord % pageSize == 0 ? totalRecord / pageSize : totalRecord / pageSize + 1;
// 查询当前页的记录
String dataSql = "SELECT * FROM (SELECT t.*, ROWNUM rn FROM (SELECT * FROM table_name ORDER BY id) t WHERE ROWNUM <= ?) WHERE rn >= ?";
stmt = conn.prepareStatement(dataSql);
stmt.setInt(1, pageNo * pageSize);
stmt.setInt(2, (pageNo - 1) * pageSize + 1);
rs = stmt.executeQuery();
// 处理记录
while (rs.next()) {
// 处理记录...
}
// 输出分页信息
System.out.println("总记录数:" + totalRecord);
System.out.println("总页数:" + totalPage);
System.out.println("当前页:" + pageNo);
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
}
```
在以上示例代码中,我们首先定义了分页参数,然后连接数据库,查询总记录数,并根据总记录数计算总页数。接着,我们使用SQL语句实现分页查询,该SQL语句使用了ROWNUM伪列,ROWNUM伪列是Oracle特有的一种伪列,它是一个按照顺序从1开始递增的整数值,可以用于限制结果集的行数。最后,我们通过循环遍历结果集,处理每条记录,并输出分页信息。最后,我们关闭了所有资源。
阅读全文