Oracle数据库分页显示记录的类,究竟有何独特之处?
- 云服务器
- 2026-01-17
- 4
分页显示Oracle数据库记录的类之一:基于JDBC的Java实现
在开发过程中,分页显示数据库记录是一个常见的需求,对于Oracle数据库,我们可以通过JDBC连接数据库,并利用SQL语句中的ROWNUM来实现分页功能,以下是一个基于JDBC的Java实现分页显示Oracle数据库记录的类。
我们需要创建一个名为Page的类,用于封装分页信息,该类包含以下属性:
| 属性名 | 数据类型 | 说明 |
|---|---|---|
| currentPage | int | 当前页码 |
| pageSize | int | 每页显示的记录数 |
| totalCount | int | 总记录数 |
| startRow | int | 当前页的起始行号 |
| endRow | int | 当前页的结束行号 |
我们创建一个名为OraclePageHelper的类,用于实现分页功能,该类包含以下方法:
| 方法名 | 返回值 | 说明 |
|---|---|---|
| queryForList | List | 根据分页信息查询数据库记录 |
| getTotalCount | int | 查询总记录数 |
| getStartRow | int | 获取当前页的起始行号 |
| getEndRow | int | 获取当前页的结束行号 |
以下是OraclePageHelper类的具体实现:

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class OraclePageHelper<T> { private Connection connection; private int currentPage; private int pageSize; private int totalCount; private int startRow; private int endRow; public OraclePageHelper(Connection connection, int currentPage, int pageSize) { this.connection = connection; this.currentPage = currentPage; this.pageSize = pageSize; this.startRow = (currentPage 1) * pageSize + 1; this.endRow = currentPage * pageSize; } public List<T> queryForList(String sql, Class<T> clazz) throws SQLException { List<T> list = new ArrayList<>(); PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, startRow); statement.setInt(2, endRow); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { T t = clazz.newInstance(); // 根据实际表结构,将resultSet中的数据赋值给t对象 // ... list.add(t); } resultSet.close(); statement.close(); return list; } public int getTotalCount(String sql) throws SQLException { PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); resultSet.next(); totalCount = resultSet.getInt(1); resultSet.close(); statement.close(); return totalCount; } public int getStartRow() { return startRow; } public int getEndRow() { return endRow; } }
使用示例:
public class Main { public static void main(String[] args) { Connection connection = null; // 获取数据库连接 OraclePageHelper<YourClass> pageHelper = new OraclePageHelper<>(connection, 1, 10); try { List<YourClass> list = pageHelper.queryForList("SELECT * FROM your_table WHERE 1=1", YourClass.class); for (YourClass item : list) { // 处理查询结果 } int totalCount = pageHelper.getTotalCount("SELECT COUNT(*) FROM your_table WHERE 1=1"); System.out.println("Total Count: " + totalCount); } catch (SQLException e) { e.printStackTrace(); } } }
FAQs:

-
问题:如何获取当前页的起始行号和结束行号?
解答:在OraclePageHelper类中,getStartRow()和getEndRow()方法分别用于获取当前页的起始行号和结束行号。
-
问题:如何根据查询条件进行分页查询?
解答:在OraclePageHelper类中,queryForList方法接受SQL查询语句和目标对象类型,根据分页信息执行查询并返回查询结果列表。
- 《Java数据库编程》 周志明,电子工业出版社
- 《Oracle数据库应用开发技术》 张立涛,清华大学出版社
国内文献权威来源:
