分页关键知识点总结
分页的两种方式:
1. 使用复杂的子查询sql语句实现分页;
2. 使用Hibernate Query接口提供的方法:
SetFirstResult(): 设置第一条记录的位置,初始位置为0,参数为(currentPage-1)*pageSize;
SetMaxResults(): 设置最大返回的记录条数,参数为PageSize。
分页查询涉及的参数:
记录总数 totalCount: select count(*) from tableName;
总页数 totalPage: totalCount%pageSize==0? totalCount/pageSize: totalCount/pageSize+1;
每页记录数 pageSize
当前页码数currentPage
第一种方式:
sql = select * from (select a.*,ROWNNUM rn from (select * from news ) a where ROWNNUM >=?) where rn<=?;
pstmt = con.prepareStatement(sql);
起始记录数:(currentPage-1)*pageSize+1;
结束记录数:currentPage*pageSize;
设置参数pstmt.setObject();
rst = pstmt.executeQuery(); // 执行查询,获取结果集
第二种方式:
Hql=select id,author from news; // 不需要分页参数
Query queryList = session.createQuery(hql);
queryList.setFirstResult((currPage-1)*pageSize);//开始
queryList.setMaxResults(pageSize); //每页的数据量
lists = queryList.list(); // 直接获取list集合
前台页面
共?条第?页共?页 首页上一页下一页尾页跳转?页每页?条
红色部分为静态显示,黄色部分为js动作控制,主要改变currentPage参数值。
绿色部分可静态显示,也可动态改变。
因此需要传递的参数:currentPage,(pageSize)
注意首次查询应对传递参数进行非空判断,如果为空应赋默认值。