欢迎访问宙启技术站
智能推送

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函数时,传入对应的页码和每页的数据条数,即可实现分页查询。