当前位置: 移动技术网 > IT编程>开发语言>Java > jsp hibernate的分页代码第1/3页

jsp hibernate的分页代码第1/3页

2017年12月12日  | 移动技术网IT编程  | 我要评论
可见使用hibernate,在进行查询分页的操作上,是具有非常大的灵活性,hibernate会首先尝试用特定数据库的分页sql,如果没用,再尝试scrollable,如果不

// 刷新当前页面信息
public void refresh() {
if (totalpages <= 1) {
hasprevious = false;
hasnext = false;
} else if (currentpage == 1) {
hasprevious = false;
hasnext = true;
} else if (currentpage == totalpages) {
hasprevious = true;
hasnext = false;
} else {
hasprevious = true;
hasnext = true;
}
}
}
action一:
public actionforward querywithpage(actionmapping actionmapping,
actionform actionform,
httpservletrequest httpservletrequest,
httpservletresponse httpservletresponse) {
collection clinfos = null;//用于输出到页面的记录集合
int totalrows;//记录总行数
vehiclepropertydao vehicledao = new vehiclepropertydao();
//取得当前表中的总行数
try {
totalrows = vehicledao.getrows("select count(*) from vehicleproperty");
} catch (exception ex) {
servlet.log(ex.tostring());
return actionmapping.findforward(constants.failure);
}
//通过pagerhelper类来获取用于输出到页面的pager对象
pager pager=pagerhelper.getpager(httpservletrequest,totalrows);
//取出从startrow开始的pagesize行记录
try {
clinfos = vehicledao.findwithpage(pager.getpagesize(), pager.getstartrow());
} catch (exception ex) {
servlet.log(ex.tostring());
return actionmapping.findforward(constants.failure);
}
//把输出的记录集和pager对象保存到request对象中
httpservletrequest.setattribute("clinfos", clinfos);
httpservletrequest.setattribute("pager", pager);
return actionmapping.findforward(constants.success);
}
查询语句select count(*) from vehicleproperty 也可以换成你需要的任意的条件(select count(*) from vehicleproperty where ..)
action二:
displayallaction 显示数据页面控制器
package com.jeffrey.messagelove;
import com.jeffrey.messagelove.*;
import com.jeffrey.messagelove.pager;
import com.jeffrey.messagelove.hibernate.*;
/*
* @(#)displayaction.java 2005-5-2
*
* copyright (c) 2005, jeffrey xu
*/
import org.apache.struts.action.*;
import java.util.*;
import javax.servlet.http.*;
/**
* 显示页面控制器
*/
public class displayallaction extends action {
private hibernatedao hibernatedao = new hibernatedao();
private pager pager = new pager();
public actionforward execute(actionmapping mapping, actionform form,
httpservletrequest request, httpservletresponse response)
throws exception {
httpsession session = request.getsession();
list messagelist = null;
hquery hquery = new hquery();
int totalrows = 0;
int startrow = 0;
try {
totalrows = hibernatedao.getrows("select count(*) from message");
// 初始化页面信息
pager.init(totalrows, constants.record_per_page);
} catch (exception ex) {
ex.printstacktrace();
}
hquery.setquerystring("from message order by m_senddate desc");
string viewpage = (string) request.getparameter("viewpage");
string action = (string) request.getparameter("action");
// 跳转至相应页面
if (viewpage != null && !viewpage.equals("")) {
try {
pager.setcurrentpage(integer.parseint(viewpage));
} catch (numberformatexception e) {
e.printstacktrace();
}
}
if (action != null) {
// 根据传递进来的参数控制页面的前进后退
if (action.equalsignorecase("previous")) {
pager.previous();
} else if (action.equalsignorecase("next")) {
pager.next();
} else if (action.equalsignorecase("first")) {
pager.first();
} else if (action.equalsignorecase("last")) {
pager.last();
}
}
try {
hquery.setpagestartno(pager.getcurrentpage());
messagelist = hibernatedao.find(hquery);
} catch (exception ex) {
ex.printstacktrace();
}
request.setattribute("list", messagelist);
session.setattribute("pager", pager);
return mapping.findforward("display");
}
}
action中pagerhelp类以及dao
package com.jpcf.db.helper;
import javax.servlet.http.*;
public class pagerhelper {
public static pager getpager(httpservletrequest httpservletrequest,
int totalrows) {
//定义pager对象,用于传到页面
pager pager = new pager(totalrows);
//从request对象中获取当前页号
string currentpage = httpservletrequest.getparameter("currentpage");
//如果当前页号为空,表示为首次查询该页
//如果不为空,则刷新pager对象,输入当前页号等信息
if (currentpage != null) {
pager.refresh(integer.parseint(currentpage));
}
//获取当前执行的方法,首页,前一页,后一页,尾页。
string pagermethod = httpservletrequest.getparameter("pagemethod");
if (pagermethod != null) {
if (pagermethod.equals("first")) {
pager.first();
} else if (pagermethod.equals("previous")) {
pager.previous();
} else if (pagermethod.equals("next")) {
pager.next();
} else if (pagermethod.equals("last")) {
pager.last();
}
}
return pager;
}
}
dao类
package com.jpcf.db.dao;
import com.jpcf.db.model.*;
import com.jpcf.db.helper.hibernateutil;
import net.sf.hibernate.*;
import java.util.*;
import com.jpcf.db.controller.*;
public class vehiclepropertydao {
public collection findwithpage(int pagesize, int startrow) throws
hibernateexception {
collection vehiclelist = null;
transaction tx = null;
try {
session session = hibernateutil.currentsession();
tx = session.begintransaction();
query q = session.createquery("from vehicleproperty vp");
q.setfirstresult(startrow);
q.setmaxresults(pagesize);
vehiclelist = q.list();
tx.commit();
} catch (hibernateexception he) {
if (tx != null) {
tx.rollback();
}
throw he;
} finally {
hibernateutil.closesession();
}
return vehiclelist;
}
public int getrows(string query) throws
hibernateexception {
int totalrows = 0;
transaction tx = null;
try {
session session = hibernateutil.currentsession();
tx = session.begintransaction();
totalrows = ((integer) session.iterate(query).next()).
intvalue();
tx.commit();
} catch (hibernateexception he) {
if (tx != null) {
tx.rollback();
}
throw he;
} finally {
hibernateutil.closesession();
}
return totalrows;
}
}
2

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网