分页显示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数据库应用开发技术》 张立涛,清华大学出版社
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/336079.html