刚刚接触数据库条目分页这个概念时让我有点迷茫。如何实现呢?
后来仔细考虑了下,查询分页不外乎是这样一个问题:
ResultSet rs = pstmt.executQuery("select * from t_user order by id");
此时已经获取了我要分页的数据集(rs)。假如当前每页显示5条,那么第一页我需要做的事情是:
ResultSet rs = pstmt.executQuery("select * from t_user order by id");
return rs.list(0,4); //这里是伪代码,意思是获取rs中前5个结果并返回。
那么第二页便是
ResultSet rs = pstmt.executQuery("select * from t_user order by id");
return rs.list(5,9); //这里是伪代码,意思是获取rs中5-9的结果并返回。
接下来我们要对上面的做法进行泛化
首先定义一个每页显示的数据条目
int pageSize = 5;
然后我们需要获取表中数据条目总数
int rowCount = pstmt.executQuery("select count(*) from t_user").get(0);
接下来我们需要计算一共需要分成几页来显示
int pageCount = (rowCount-1)/pageSize+1
然后便是查询
ResultSet rs = pstmt.executQuery("select * from t_user order by id");
return rs.list(x,y);
这里我们还是无法确定x,y的值,我们需要定义一个当前页面 int currentPage = 1;
那么x = (currentPage-1)*5
y = currentPage*5-1
至此我们已经实现了分页效果,那么如何在web端实现呢?
这里的currentPage 需要web端以参数的行数传递到后台