javaweb 分页查询
时间: 2023-09-13 08:09:26 浏览: 36
JavaWeb 分页查询一般涉及到以下几个步骤:
1. 获取查询总记录数。可以通过 SQL 语句查询数据库中满足条件的总记录数。
2. 计算总页数。根据每页显示的记录数和总记录数,计算出总页数。
3. 获取当前页记录。通过 SQL 语句查询当前页的数据记录。
4. 将查询结果封装成分页对象并返回。可以使用一个 JavaBean 将查询结果封装成分页对象并返回,该对象包含当前页码、总页数、总记录数、当前页记录等信息。
下面是一个简单的实现示例:
```java
public class PageBean<T> {
private int currentPage; // 当前页码
private int totalPage; // 总页数
private int pageSize; // 每页显示的记录数
private int totalCount; // 总记录数
private List<T> list; // 当前页记录列表
// 省略 get/set 方法
public PageBean(int currentPage, int pageSize) {
this.currentPage = currentPage;
this.pageSize = pageSize;
// 计算总记录数和总页数
int[] arr = getStartAndEnd(currentPage, pageSize);
int start = arr[0];
int end = arr[1];
String sqlCount = "select count(*) from table_name";
String sqlData = "select * from table_name limit " + start + "," + pageSize;
// 查询总记录数
ResultSet rsCount = stmt.executeQuery(sqlCount);
if (rsCount.next()) {
totalCount = rsCount.getInt(1);
}
// 查询当前页记录列表
ResultSet rsData = stmt.executeQuery(sqlData);
while (rsData.next()) {
// 将查询结果封装成实体对象,再添加到 list 中
T entity = createEntity(rsData);
list.add(entity);
}
// 计算总页数
totalPage = (totalCount + pageSize - 1) / pageSize;
}
private int[] getStartAndEnd(int currentPage, int pageSize) {
int start = (currentPage - 1) * pageSize;
int end = start + pageSize;
return new int[] { start, end };
}
}
```
在使用时,可以通过传入当前页码和每页显示的记录数来初始化 PageBean 对象:
```java
PageBean<User> pageBean = new PageBean<>(currentPage, pageSize);
```
其中,createEntity() 方法需要根据具体的实体对象进行实现。另外,需要注意 SQL 语句中的表名和字段名需要根据实际情况进行修改。