利用Hibernate分页,是在BaseHibernateDAO里写几行代码:
代码如下:
HttpServletRequest request;
int pNo = 0,pageno1 = 0,pagesize = 10,row = 0;
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
public void init(HttpServletRequest request,Integer pageSize){
this.request = request;
pagesize = pageSize;
String pageno = request.getParameter("pageno")!=null&&!request.getParameter("pageno").trim().equals("")?request.getParameter("pageno"):"0";
try{
pageno1 = !pageno.equals("0")&&com.util.StrUtil.isNumeric(pageno)?Integer.valueOf(pageno):0;
}catch(Exception e){
e.printStackTrace();
pageno1 = 0;
}
pNo = pageno1<1?0:pageno1-1;
}
我一直以前用这种分页方法,很简单,也很实用。
今天把详细的使用方法写出来,大家来看看!希望大家能给点建议。
第一步:在BaseHibernateDAO里写填加如下代码:
HttpServletRequest request;
int pNo = 0,pageno1 = 0,pagesize = 10,row = 0;
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
public void init(HttpServletRequest request,Integer pageSize){
this.request = request;
pagesize = pageSize;
String pageno = request.getParameter("pageno")!=null&&!request.getParameter("pageno").trim().equals("")?request.getParameter("pageno"):"0";
try{
pageno1 = !pageno.equals("0")&&com.util.StrUtil.isNumeric(pageno)?Integer.valueOf(pageno):0;
}catch(Exception e){
e.printStackTrace();
pageno1 = 0;
}
pNo = pageno1<1?0:pageno1-1;
}
第二步:在DAO里:
public List show(HttpServletRequest request,Integer star,Integer pagesize,Integer isDel,
String text,String order){
log.debug("finding all WebAdverSpace instances");
init(request, pagesize);
getSession().clear();
try {
String queryString = "from WebAdverSpace where isDel=" + isDel ;
queryString = queryString + " " + (order.equals("")?" order by isTop desc,id desc":order);
Query queryObject = getSession().createQuery(queryString);
row = queryObject.list().size();
star = star==0&&pagesize*pNo<row?pagesize*pNo:star;
if(star!=0)queryObject.setFirstResult(star);
if(pagesize!=0)queryObject.setMaxResults(pagesize);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
::::init(request,pagesize);这个应该知道吧,传入request和pagesize,
下面的就更好理解了,不在说了!
第三步:在页面里
String isdel = request.getParameter("isdel")==null?"0":request.getParameter("isdel");
String text = request.getParameter("text")==null?"":request.getParameter("text");
String order = request.getParameter("order")==null?"":request.getParameter("order");
text = new String(text.getBytes("ISO-8859-1"),"utf-8");
order = order.replace("-"," ");
Integer start = 0,pagesize = 15;
/*本来想传值部分就不用写这么全了,下面为了说明,还是写上吧,比较方便,同时也别让混了!
listDao.show(request,start,pagesize,Integer.valueOf(isdel),text,order);
说明:
1、listDao是初始化的DAO
2、show是调用DAO里的show方法,在第二步里添加的
3、start是起始位置,一般是0,pagesize是页码数如:15;isdel是删除的意思;text是查询的关键字;order是排序的意思;
页面就是:list.jsp?pageno=0是0到15条内容,从0开始到15条,其实第一步填入的代码已经说明1以下的都是第一页。
list.jsp?pageno=2是15到30的内容,从15开始取15条内容。以此类推;
明白了吧
这句就可以调出分页时,本页的内容!
还有一个JS可以结合这个来做分页,现在把JS代码贴在这里:
//===== relative URL handling code for js files ================
sWZBaseFolder = "";
sWZ = window.location.href;
iWZ = sWZ.indexOf(sWZBaseFolder) + sWZBaseFolder.length + 1;
sWZBase = sWZ.substring(0,iWZ);
//===== Copyright ?2001 Spidersoft. All rights reserved. ======
//分页显示
function ShowPageLink(recCount, recPage, nPage, url)
{
var nPages, bof, eof,i,spage;
if (recCount % recPage == 0)
nPages = recCount / recPage;
else
nPages = (recCount - (recCount % recPage)) / recPage + 1;
if (nPage < 1) nPage = 1;
if (nPage > nPages) nPage = nPages;
if (nPages<2) spage = 0;
bof = (nPage == 1);
eof = (nPage == nPages);
document.write(" 共<font class=body_number>" + recCount + "</font>条信息,");
document.write(" 每页<font class=body_number>" + recPage + "</font>条信息,");
document.write(" 当前页码:<font class=body_number>" + nPage + "</font>/<font class=body_number>" + nPages + "</font>");
//document.write(" 分成<font class=body_number>" + nPages + "</font>页显示,");
//document.write(" 现在是第<font class=body_number>" + nPage + "</font>页");
//document.write(" | ");
//if(bof) document.write("首 页")
//else document.write("<a href=" + url + (0) + ">首 页</a>");
//document.write(" | ");
//if (bof) document.write("上一页");
//else document.write("<a href=" + url + (nPage-1) + ">上一页</a>");
//document.write(" | ");
//if (eof) document.write("下一页");
//else document.write("<a href=" + url + (nPage+1) + ">下一页</a>");
//document.write(" | ");
//if(eof) document.write("末 页")
//else document.write("<a href=" + url + (nPages) + ">末 页</a>");
document.write(" | 转跳");
document.write("<select οnchange=/"window.location=('" + url + "'+this.options[this.selectedIndex].value)/">");
for (i=1;i<=nPages;i++){
if (i==nPage){
//使当前页为选定状态
document.write('<option value=' + i + ' selected>第' + i + '页</option>');
} else {
document.write('<option value=' + i + '>第' + i + '页</option>');
}
}
document.write('</select>');
document.write(" ");
if(bof){document.write("首页");
}
else{
if(nPage>0){
document.write("<a href=" + url + (0) + ">首页</a>");
}else{
document.write("首页");
}
}
document.write(" ");
if (bof){
document.write("上一页");
}else{
if(nPage>0){
document.write("<a href=" + url + (nPage-1) + ">上一页</a>");
}else{
document.write("上一页");
}
}
document.write(" ");
if (eof) document.write("下一页");
else document.write("<a href=" + url + (nPage+1) + ">下一页</a>");
document.write(" ");
if(eof) document.write("末页")
else document.write("<a href=" + url + (nPages) + ">末页</a>");
JS代码结束:::::::::::
调用此JS
第一、在BaseHibernateDAO里填加如下代码:
public String pageBottom(String extParam){
return "<script language=/"javascript/">ShowPageLink("+row+","+pagesize+"," +pageno1+", '"+extParam+"pageno=');</script>";
}
第二、在页面里加入JS代码,然后在需要分页的地方加:
<%=listDao.pageBottom("?") %>
即可实现漂亮的分页了!
希望能给朋友们帮助!