java代码如何分页
分页实现方法
在Java中实现分页功能通常涉及数据库查询和前端展示两部分。以下是几种常见的分页实现方式:
数据库分页查询
使用SQL语句的LIMIT和OFFSET(MySQL/PostgreSQL)或ROWNUM(Oracle)实现分页:
// MySQL/PostgreSQL示例
String sql = "SELECT * FROM table_name LIMIT ? OFFSET ?";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setInt(1, pageSize); // 每页记录数
pstmt.setInt(2, (pageNum - 1) * pageSize); // 偏移量
ResultSet rs = pstmt.executeQuery();
Spring Data JPA分页
Spring Data JPA提供了内置的分页支持:

Pageable pageable = PageRequest.of(pageNum - 1, pageSize, Sort.by("id").descending());
Page<User> pageResult = userRepository.findAll(pageable);
List<User> users = pageResult.getContent();
long total = pageResult.getTotalElements();
MyBatis分页
使用MyBatis的RowBounds或分页插件:
<!-- Mapper接口 -->
List<User> selectByPage(RowBounds rowBounds);
<!-- 调用方式 -->
List<User> users = userMapper.selectByPage(new RowBounds(offset, limit));
分页参数封装
通常需要封装分页参数和结果:

public class PageInfo<T> {
private int pageNum; // 当前页码
private int pageSize; // 每页数量
private long total; // 总记录数
private List<T> list; // 当前页数据
// getters/setters
}
前端分页处理
前端通常需要接收分页数据并展示分页控件:
// 示例AJAX请求
function loadPage(pageNum) {
$.get('/api/users?page=' + pageNum + '&size=10', function(data) {
// 渲染数据列表
// 更新分页控件
});
}
性能优化建议
对于大数据量分页,避免使用OFFSET方式:
- 使用"seek method"替代(WHERE id > last_id LIMIT pageSize)
- 添加合适索引
- 考虑缓存热门页数据
以上方法可以根据具体技术栈和业务需求选择组合使用。






