分页查询的Java代码实现

分页查询是数据库操作中常见的需求,它可以将大量数据分批次展示给用户,提高用户体验,在Java中,实现分页查询通常需要以下几个步骤:确定每页显示的记录数、计算总页数、获取当前页的数据,以下将详细介绍如何在Java中实现分页查询。
准备工作
创建数据库表
我们需要创建一个数据库表,用于存储示例数据,以下是一个简单的示例表结构:

CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
email VARCHAR(100)
);
连接数据库
在Java项目中,我们需要使用JDBC连接数据库,以下是一个简单的连接数据库的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseUtil {
private static final String URL = "jdbc:mysql://localhost:3306/your_database";
private static final String USER = "your_username";
private static final String PASSWORD = "your_password";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
实现分页查询
计算总页数

public static int getTotalPages(Connection conn, int pageSize) throws SQLException {
String sql = "SELECT COUNT(*) FROM users";
try (PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
int totalRecords = rs.getInt(1);
return (int) Math.ceil((double) totalRecords / pageSize);
}
}
return 0;
}
获取当前页的数据
public static List<User> getCurrentPageData(Connection conn, int currentPage, int pageSize) throws SQLException {
List<User> users = new ArrayList<>();
String sql = "SELECT * FROM users LIMIT ?, ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, (currentPage - 1) * pageSize);
stmt.setInt(2, pageSize);
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setEmail(rs.getString("email"));
users.add(user);
}
}
}
return users;
}
使用分页查询
public static void main(String[] args) {
try (Connection conn = DatabaseUtil.getConnection()) {
int pageSize = 10; // 每页显示10条数据
int totalPages = getTotalPages(conn, pageSize);
System.out.println("Total pages: " + totalPages);
for (int i = 1; i <= totalPages; i++) {
List<User> users = getCurrentPageData(conn, i, pageSize);
System.out.println("Page " + i + ":");
for (User user : users) {
System.out.println("ID: " + user.getId() + ", Username: " + user.getUsername() + ", Email: " + user.getEmail());
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
通过以上步骤,我们可以在Java中实现分页查询,在实际项目中,您可以根据需求调整每页显示的记录数、数据库表结构以及查询逻辑,希望本文对您有所帮助。


















