Java分页查询代码,加注释
时间: 2023-07-09 08:50:32 浏览: 54
当我们需要查询大量数据时,通常需要使用分页查询,将结果分成多个页面返回给用户,以提高查询效率和用户体验。以下是使用Java代码实现分页查询的示例,带有注释说明每个重要步骤的作用。
```
public List<User> findUsersByPage(int pageNum, int pageSize) {
// 计算起始记录的索引
int startIndex = (pageNum - 1) * pageSize;
// 构造SQL语句,使用LIMIT关键字来实现分页
String sql = "SELECT * FROM user LIMIT ?, ?";
try (Connection conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
// 设置查询参数
ps.setInt(1, startIndex);
ps.setInt(2, pageSize);
// 执行查询,获取结果集
ResultSet rs = ps.executeQuery();
// 构造User对象列表,用于存放查询结果
List<User> users = new ArrayList<>();
// 遍历结果集,将每个记录转换为User对象并添加到列表中
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
// ...其他属性赋值
users.add(user);
}
// 返回查询结果
return users;
} catch (SQLException e) {
// 处理异常
e.printStackTrace();
return null;
}
}
```
在这个示例中,我们使用了Java的JDBC API来连接数据库,并使用MySQL的LIMIT语句来实现分页查询。具体步骤如下:
1. 首先计算起始记录的索引,这个索引可以通过pageNum和pageSize计算得出。例如,如果pageNum=3,pageSize=10,则起始索引为20。
2. 构造SQL语句,使用占位符(?)来表示参数。这里我们使用了LIMIT语句来限制返回的记录数,第一个参数表示起始索引,第二个参数表示返回的记录数。注意,MySQL中LIMIT的起始索引是从0开始的。
3. 使用JDBC API获取数据库连接,创建PreparedStatement对象,并设置查询参数。在这个示例中,我们设置了两个参数,分别是起始索引和返回记录数。
4. 执行查询,获取结果集。在JDBC中,查询结果通常以ResultSet对象的形式返回。
5. 遍历结果集,将每个记录转换为User对象,并添加到User列表中。
6. 返回查询结果。
需要注意的是,在实际应用中,我们通常还需要对pageNum和pageSize进行合法性检查,防止出现非法参数导致的异常或安全问题。同时,还需要对查询语句中的关键字进行转义,防止SQL注入攻击。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)