java分页怎么实现
怕面试的时候问到,一种是:代码分页,查询出所有的记录,然后分页显示,另一种是sql分页,用limit。第一种有效率问题,第二种比较好(但也感觉有问题不知道是什么)。还有s...
怕面试的时候问到, 一种是:代码分页,查询出所有的记录,然后分页显示,另一种是sql分页,用limit。第一种有效率问题,第二种比较好(但也感觉有问题不知道是什么)。还有spring有分页技术,但是我没研究过,可以简单介绍下吗?怎么实现比较好
展开
5个回答
展开全部
<body>
<%! int pageSize=3; //每页显示的记录数
int pageCount=0; //分页后的总页数
%>
<FORM action="bookfind1.jsp" method=get >
输入页码数<Input Type="text" name="showPage" size="4" >
<Input Type="submit" value="提交">
</FORM>
<%
Connection con;
Statement sql;
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){}
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/tybook","root","123");
sql=con.createStatement();
Statement sql1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//返回可滚动的结果集:
ResultSet rs=sql1.executeQuery("SELECT * FROM books");
rs.last(); //将游标移动到最后一行
int lastRow=rs.getRow(); //获取最后一行的行号
//计算分页后的总页数
pageCount=(lastRow%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
int showPage=1; //当前显示的初始页数
%>
<P> 共有<%=pageCount%>页
每页显示<%=pageSize%>条记录.
<%
String integer=request.getParameter("showPage");//获取客户输入页数
System.out.print(integer);
if(integer==null){
integer="1";
}
try {
showPage=Integer.parseInt(integer);
}
catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1){
showPage=1;
}
if(showPage>=pageCount){
showPage=pageCount;
}
%>
<BR>目前显示第<%=showPage%>页
<%
//如果要显示第showPage页,那么计算游标应移到位置posion
int posion=(showPage-1)*pageSize+1;
rs.absolute(posion); // 设置游标的位置
out.print("<Table Border bgcolor='74bbc0'>");
out.print("<TR>");
out.print("<TH width=100>"+"学号");
out.print("<TH width=100>"+"姓名");
out.print("<TH width=50>"+"学分");
out.print("</TR>");
for (int i=1;i<=pageSize;i++){
out.print("<TR>");
out.print("<TD >"+rs.getString(1)+"</TD>");
out.print("<TD >"+rs.getString(2)+"</TD>");
out.print("<TD >"+rs.getString(3)+"</TD>");
out.print("</TR>") ;
rs.next();
}
out.print("</Table>");
con.close(); //关闭连接
%>
</body>
<%! int pageSize=3; //每页显示的记录数
int pageCount=0; //分页后的总页数
%>
<FORM action="bookfind1.jsp" method=get >
输入页码数<Input Type="text" name="showPage" size="4" >
<Input Type="submit" value="提交">
</FORM>
<%
Connection con;
Statement sql;
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){}
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/tybook","root","123");
sql=con.createStatement();
Statement sql1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//返回可滚动的结果集:
ResultSet rs=sql1.executeQuery("SELECT * FROM books");
rs.last(); //将游标移动到最后一行
int lastRow=rs.getRow(); //获取最后一行的行号
//计算分页后的总页数
pageCount=(lastRow%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
int showPage=1; //当前显示的初始页数
%>
<P> 共有<%=pageCount%>页
每页显示<%=pageSize%>条记录.
<%
String integer=request.getParameter("showPage");//获取客户输入页数
System.out.print(integer);
if(integer==null){
integer="1";
}
try {
showPage=Integer.parseInt(integer);
}
catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1){
showPage=1;
}
if(showPage>=pageCount){
showPage=pageCount;
}
%>
<BR>目前显示第<%=showPage%>页
<%
//如果要显示第showPage页,那么计算游标应移到位置posion
int posion=(showPage-1)*pageSize+1;
rs.absolute(posion); // 设置游标的位置
out.print("<Table Border bgcolor='74bbc0'>");
out.print("<TR>");
out.print("<TH width=100>"+"学号");
out.print("<TH width=100>"+"姓名");
out.print("<TH width=50>"+"学分");
out.print("</TR>");
for (int i=1;i<=pageSize;i++){
out.print("<TR>");
out.print("<TD >"+rs.getString(1)+"</TD>");
out.print("<TD >"+rs.getString(2)+"</TD>");
out.print("<TD >"+rs.getString(3)+"</TD>");
out.print("</TR>") ;
rs.next();
}
out.print("</Table>");
con.close(); //关闭连接
%>
</body>
展开全部
第一种分页,一般都是用jquery分页主键,把内容全部查询出来现实,第二种分页相对来说好些,limit是mysql中用到的,sqlserver中用的是top,spring分页不怎么了解,好像是hibernate吧,如:q.setFirstResult(2);
q.setMaxResults(100);
q.setMaxResults(100);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据少的情况下,用第一种没问题,如果数据量过大,那就要用第二种,一般情况下,企业的数据都是上万行,你说用那种
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
limit 是mysql的 现在基本用的少了
大多数都是子查询实现的
大多数都是子查询实现的
更多追问追答
追问
子查询?
追答
select (select ) where between ? and ?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
limit 只适用于mysql,用SQL写分页,要看是什么数据库,如果是oracle就可以用子查询,可以写存储过程来做分页,传入两个参数,一个是当前第几页,另一个参数是每页显示多少条记录!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询