Java在Orcale中的数据库分页分四块
首先我们需要一个PageBean中需要声明六个成员变量,剩下的就是set,get方法;
public class PageBean {
private int pagesize;//分页单位
private int pagenow;//当前页
private int rowstart;//起始行
private int rowend;//结束行
private int pageall;//总页数
private int rows;//总行数
private List<Map<String,Object>> list;
...................................
省略
}
在我们的业务处理中我们需调用
//------分页方法开始
String pagenow1=request.getParameter("pagenow");//在jsp页面获取页码数
int pagenow=0;
if(pagenow1==null){ //初始为一
pagenow=1;
}else{
pagenow=Integer.parseInt(pagenow1);
}
String sql="select * from member"; //想给数据库中的哪张表分页 就拼哪个SQL
DBUtil dbu=new DBUtil(); //jdbc工具类
PageBean pb=new PageBean();
pb=dbu.getPage(sql,pagenow,5); //dbu.getPage(哪张表,页码,一页记录数)
request.setAttribute("pb", pb);
request.getRequestDispatcher("hsshoutai/files/listhuiyuan.jsp").forward(request, response);
在工具类中 DBUtil中写的分页方法
//分页查询方法
public PageBean getPage(String sql,int pagenow,int pagesize){ //三个参数
PageBean pb=new PageBean();
pb.setPagenow(pagenow);
pb.setPagesize(pagesize);
pb.setRowstart((pagenow-1)*pagesize+1); //计算某页的起始行
pb.setRowend(pb.getRowstart()+pagesize-1); //计算某页的结束行
pb.setRows(queryToList(sql).size()); //工具类中的查询数据库行数的方法,总记录数
pb.setPageall(pb.getRows()%pagesize==0?pb.getRows()/pagesize:pb.getRows()/pagesize+1);
String sql2="select * from (select t.*,rownum as rowindex from ("+sql+")t where rownum<="+pb.getRowend()+") where rowindex>="+pb.getRowstart();
pb.setList(queryToList(sql2));
return pb;
}
在jsp页面 我们千万不要忘记把Pagenow的值传回来
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/hsshoutai/files/";
PageBean pb=(PageBean)request.getAttribute("pb");
int pageall=pb.getPageall();
%>
在用js去获取本页码等等
在table中去写上一页,下一页,首页,尾页,跳页等等。