java中数据库中实现分页的sql语句要求每页十条要查询的是第二页

java中数据库中实现分页的sql语句要求每页十条要查询的是第二页,第1张

1、首先preparedstatement是statement的子接口,属于预处理 *** 作,与直接使用statement不同的是,preparedstatement在 *** 作的时候,先在数据表中准备好了一条sql语句,但是sql语句的值暂时不设置,而是之后设置。

2、在使用statement的时候,要执行一条完整的失去了,在执行钱使用connection直接创建的。

3、如何获得preparedstatement,在connection接口中,通过preparedstatement(String sql)得到。

4、最后在日期输入的时候,正常情况都是使用java.util.date表示日期,在 preparedStatement中需要使用java.sql.date类型,如下图所示就完成了。

给你一个非缓存分页类的简单例子吧(Page类可以视作javabean):

/**

* @author Administrator

*

*

* TODO 要更改此生成的类型注释的模板,请转至

* 窗口 - 首选项 - Java - 代码样式 - 代码模板

*/

import java.util.*

public class Pager {

private String PageUrl

private boolean hasNext

private boolean hasPrevious

private String previousPage

private String nextPage

private int offset

private int size

private int length

private int pagenumber

public Pager(int offset,int length, int size, String url){

this.offset=offset

this.length=length

this.size=size

int index=url.indexOf("&pager.offset")

if (index>-1){

this.PageUrl=url.substring(0,index)

}else{

this.PageUrl=url

}

}

public void setoffset(int offset){

this.offset=offset

}

public void setPagerUrl(String PagerUrl){

this.PageUrl=PagerUrl

}

public void setsize(int size){

this.size=size

}

public void setlength(int length){

this.length=length

}

public int getoffset(){

return this.offset

}

public String getPageUrl(){

return this.PageUrl

}

public boolean gethasNext(){

if((offset+1)*length>=size){

hasNext=false

}else{

hasNext=true

}

return hasNext

}

public boolean gethasPrevious(){

if(offset>=1){

this.hasPrevious=true

}else{

this.hasPrevious=false

}

return hasPrevious

}

public String getpreviousPage(){

this.previousPage=""

if (this.gethasPrevious()){

this.previousPage=this.PageUrl+"&pager.offset="+(offset-1)

}

return previousPage

}

public String getnextPage(){

this.nextPage=""

if(this.gethasNext()){

this.nextPage=this.PageUrl+"&pager.offset="+(offset+1)

}

return this.nextPage

}

public int getpagenumber(){

float temppn=(float)size/(float)length

pagenumber=new Float(temppn).intValue()

if (temppn>pagenumber){

this.pagenumber++

}

return this.pagenumber

}

public static ArrayList FindPageList(int offset,int length,List list){

ArrayList alist=new ArrayList()

for(int i=offset*lengthi<(offset*length+length)&&i<list.size()i++){

alist.add(list.get(i))

}

return alist

}

}

具体使用:

1、在servlet初始化这个page

List list=DataUtil.getSpecifiedList()//得到整个数据列表

int offset=0//便宜量

int length=10//每页数据记录数

String pageOffset=request.getParameter("pager.offset")

if(pageOffset==null||pageOffset.equals("")){

offset=0

}else{

offset=Integer.parseInt(pageOffset)

}

String Url=request.getRequestURL().toString()+"?"+request.getQueryString()

Pager pager=new Pager(offset,length,list.size(),Url)

List RsList=Pager.FindPageList(offset,length,list)

request.setAttribute("Pager",pager)

request.setAttribute("List",RsList)

RequestDispatcher dispatcher= request.getRequestDispatcher("/UI/someModule/list_display.jsp")

dispatcher.forward(request,response)

2、具体jsp中得到分页结果,并显示,并附页面跳转部分:

页面中得到分页结果

<%

List RpList=(List)request.getAttribute("List")

Pager pager=(Pager)request.getAttribute("Pager")

%>

<%--用for循环把RpList显示--%>

<!--页面跳转代码,这只是个形式,简化和改变方式的余地很大-->

<form name="pageForm"><%if(pager.gethasPrevious()){%><a href="<%= pager.getpreviousPage()%>">prev</a>

<%}%>

<%if( pager.gethasNext()){%><a href="<%=pager.getnextPage()%>">next</a><%}%><%if(pager.getpagenumber()>1) {%>第<select name="pager" onchange="window.location='<%=pager.getPageUrl()%>&pager.offset='+document.pageForm.pager.selectedIndex"><%for(int i=0i<pager.getpagenumber()i++){%><option value=<%=i%><%if(pager.getoffset()==i){ %>selected<%}%>><%=(i+1)%></option><%}%></select>页<%}%> 共<%=pager.getpagenumber()%>页</form>

ps:1、2两部分可以都放在页面类,不过你好像要MVC,所以给你这个代码。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9261016.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存