Java函数中实现分页查询的方法及示例
发布时间:2023-07-02 21:56:50
在Java中实现分页查询的方法,可以通过以下步骤来实现:
1. 通过查询数据库获取符合条件的所有数据的总数。
2. 设置每页显示的数据条数pageSize和当前页码pageNo。
3. 计算出总页数totalPage,即总数据量除以每页的数据条数。
4. 根据当前页码和每页的数据条数,计算出需要查询的数据的起始位置start。
5. 构建查询语句,使用LIMIT子句限制查询结果的范围,起始位置为start,数据条数为pageSize。
6. 执行查询,获取查询结果。
7. 返回查询结果。
以下是一个示例代码,实现了一个分页查询用户信息的函数:
public List<User> getUserList(int pageNo, int pageSize) {
List<User> userList = new ArrayList<>();
// 查询总数据量
int total = getTotalUserCount();
// 计算总页数
int totalPage = (int) Math.ceil((double) total / pageSize);
// 根据当前页码和每页数据条数计算出需要查询的数据的起始位置
int start = (pageNo - 1) * pageSize;
// 构建查询语句
String query = "SELECT * FROM user LIMIT ?, ?";
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/mydatabase", "root", "");
PreparedStatement stmt = conn.prepareStatement(query)) {
// 设置起始位置和数据条数
stmt.setInt(1, start);
stmt.setInt(2, pageSize);
// 执行查询
try (ResultSet rs = stmt.executeQuery()) {
// 遍历查询结果,构建User对象
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
userList.add(user);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return userList;
}
public int getTotalUserCount() {
int total = 0;
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/mydatabase", "root", "");
Statement stmt = conn.createStatement()) {
// 查询总数据量
String query = "SELECT COUNT(*) AS total FROM user";
try (ResultSet rs = stmt.executeQuery(query)) {
if (rs.next()) {
total = rs.getInt("total");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return total;
}
在示例代码中,首先通过查询总数据量的函数getTotalUserCount()获取用户表的总数据量。然后根据每页数据条数pageSize、当前页码pageNo和总数据量,计算出总页数totalPage和需要查询的数据的起始位置start。接下来,使用查询语句"SELECT * FROM user LIMIT ?, ?"使用LIMIT子句限制查询结果的范围。然后通过设置起始位置和数据条数,执行查询,将查询结果遍历并构建User对象,存入结果集List中。最后返回结果集List。
调用getUserList函数时,传入对应的页码和每页的数据条数,即可实现分页查询。
