java 有两张表的数据代码如何做分页
时间: 2023-06-12 22:08:30 浏览: 73
Java分页一般使用MySQL数据库的LIMIT语句来实现,具体步骤如下:
1.首先,根据页面传递过来的参数(当前页数和每页显示的记录数),计算出需要查询的记录的起始索引(startIndex)。
2.然后,使用LIMIT语句查询需要的记录,LIMIT语句的格式为:LIMIT startIndex, pageSize。
3.最后,将查询结果封装成一个Page对象返回给前端页面。
以下是一个示例代码:
```
public class Page {
private int currentPage; // 当前页数
private int pageSize; // 每页显示的记录数
private int totalCount; // 总记录数
private int totalPage; // 总页数
private List<Object> data; // 查询结果
// 省略getter和setter方法
}
public class UserDaoImpl implements UserDao {
@Override
public Page queryForPage(int currentPage, int pageSize) {
// 计算需要查询的记录的起始索引
int startIndex = (currentPage - 1) * pageSize;
// 查询记录总数
String countSql = "SELECT COUNT(*) FROM table1, table2 WHERE table1.id=table2.id";
int totalCount = jdbcTemplate.queryForObject(countSql, Integer.class);
// 查询需要的记录
String dataSql = "SELECT * FROM table1, table2 WHERE table1.id=table2.id LIMIT ?, ?";
List<Object> data = jdbcTemplate.query(dataSql, new Object[]{startIndex, pageSize}, new BeanPropertyRowMapper<>(User.class));
// 计算总页数
int totalPage = (totalCount + pageSize - 1) / pageSize;
// 封装查询结果
Page page = new Page();
page.setCurrentPage(currentPage);
page.setPageSize(pageSize);
page.setTotalCount(totalCount);
page.setTotalPage(totalPage);
page.setData(data);
return page;
}
}
```
以上示例代码中,UserDaoImpl类是具体的数据访问对象实现类,其中queryForPage方法用于查询数据并返回分页结果。在该方法中,首先根据当前页数和每页显示的记录数计算出需要查询的记录的起始索引(startIndex),然后使用LIMIT语句查询需要的记录,并将查询结果封装成一个Page对象返回给前端页面。在封装Page对象时,需要计算总记录数、总页数等信息。