public void listByPage(String sql,PageResult pageResult); CommonDAO
public void listByPage(String sql,PageResult pageResult) CommonDAOImpl
{
if(sql==null)
{
return;
}
Query query=this.getSession().createQuery(sql);
query.setFirstResult(pageResult.getFirstRec()); //第一页
query.setMaxResults(pageResult.getPageSize());
List ret=query.list();
pageResult.setList(ret);
String queryString="";
if(sql.toUpperCase().indexOf("SELECT") !=-1)
{
int i=query.getQueryString().toUpperCase().indexOf("FROM");
queryString="Select count(*)"+sql.substring(i,sql.length());
}
else
{
queryString="Select count(*)"+sql;
}
//去掉Order by部分
int j=queryString.toUpperCase().lastIndexOf("ORDER");
if(j!=-1)
{
queryString=queryString.substring(0,j);
}
Query cquery=this.getSession().createQuery(queryString);
cquery.setCacheable(true);
int recTotal= ((Integer)cquery.iterate().next()).intValue();
pageResult.setRecTotal(recTotal);
}
private PageResult pageResult=new PageResult(); BaseForm
public PageResult getPageResult() {
return pageResult;
}
public void setPageResult(PageResult pageResult) {
this.pageResult = pageResult;
}
taglib.PaninationTag
public int doEndTag() {
try {
BaseForm oForm = null;
if (form!=null && !"".equals(form.trim())){
oForm = (BaseForm) pageContext.getRequest().getAttribute(form);
if (null==oForm){
oForm = (BaseForm) pageContext.getSession().getAttribute(form);
}
if (oForm!=null){
PageResult pageResult = oForm.getPageResult();
StringBuffer sb = new StringBuffer();
sb.append("<div style=\"text-align:right;padding:6px 6px 0 0;\">\r\n")
.append("共"+pageResult.getRecTotal()+"条记录 \r\n")
.append("每页显示<input name=\"pageResult.pageSize\" value=\""+pageResult.getPageSize()+"\" size=\"3\" />条 \r\n")
.append("第<input name=\"pageResult.pageNo\" value=\""+pageResult.getPageNo()+"\" size=\"3\" />页")
.append(" / 共"+pageResult.getPageTotal()+"页 \r\n")
.append("<a href=\"javascript:page_first();\">第一页</a> \r\n")
.append("<a href=\"javascript:page_pre();\">上一页</a>\r\n")
.append("<a href=\"javascript:page_next();\">下一页</a> \r\n")
.append("<a href=\"javascript:page_last();\">最后一页</a>\r\n")
.append("<input type=\"button\" onclick=\"javascript:page_go();\" value=\"转到\" />\r\n")
.append("<input type=\"hidden\" name=\"pageResult.orderBy\" value=\""+pageResult.getOrderBy()+"\" />\r\n")
.append("<input type=\"hidden\" name=\"pageResult.sort\" value=\""+pageResult.getSort()+"\" />\r\n")
.append("<script>\r\n")
.append(" var pageTotal = "+pageResult.getPageTotal()+";\r\n")
.append(" var recTotal = "+pageResult.getRecTotal()+";\r\n")
.append("</script>\r\n")
.append("</div>\r\n");
sb.append("<script>\r\n");
sb.append("function page_go()\r\n")
.append("{\r\n")
.append(" page_validate(); \r\n")
.append(" document.forms[0].submit();\r\n")
.append("}\r\n")
.append("function page_first()\r\n")
.append("{\r\n")
.append(" document.forms[0].elements[\"pageResult.pageNo\"].value = 1;\r\n")
.append(" document.forms[0].submit();\r\n")
.append("}\r\n")
.append("function page_pre()\r\n")
.append("{\r\n")
.append(" var pageNo = document.forms[0].elements[\"pageResult.pageNo\"].value;\r\n")
.append(" document.forms[0].elements[\"pageResult.pageNo\"].value = parseInt(pageNo) - 1;\r\n")
.append(" page_validate();\r\n")
.append(" document.forms[0].submit();\r\n")
.append("}\r\n")
.append("function page_next()\r\n")
.append("{\r\n")
.append(" var pageNo = document.forms[0].elements[\"pageResult.pageNo\"].value;\r\n")
.append(" document.forms[0].elements[\"pageResult.pageNo\"].value = parseInt(pageNo) + 1;\r\n")
.append(" page_validate();\r\n")
.append(" document.forms[0].submit();\r\n")
.append("}\r\n")
.append("function page_last()\r\n")
.append("{\r\n")
.append(" document.forms[0].elements[\"pageResult.pageNo\"].value = pageTotal;\r\n")
.append(" document.forms[0].submit();\r\n")
.append("}\r\n")
.append("function page_validate()\r\n")
.append("{\r\n")
.append(" var pageNo = document.forms[0].elements[\"pageResult.pageNo\"].value;\r\n")
.append(" if (pageNo<1)pageNo=1;\r\n")
.append(" if (pageNo>pageTotal)pageNo=pageTotal;\r\n")
.append(" document.forms[0].elements[\"pageResult.pageNo\"].value = pageNo;\r\n")
.append(" var pageSize = document.forms[0].elements[\"pageResult.pageSize\"].value;\r\n")
.append(" if (pageSize<1)pageSize=1;\r\n")
.append(" document.forms[0].elements[\"pageResult.pageSize\"].value = pageSize;\r\n")
.append("}\r\n")
.append("function order_by(field){\r\n")
.append(" document.forms[0].elements[\"pageResult.orderBy\"].value = field;\r\n")
.append(" page_first();\r\n")
.append("}\r\n");
sb.append("</script>\r\n");
JspWriter out = pageContext.getOut();
out.println(sb.toString());
}
}
} catch (Exception e) {
}
return EVAL_PAGE;
}
public class PageResult<E> {
private String orderBy = "";
private String sort = "asc";
private List<E> list = new ArrayList<E>(); //查询结果
private int pageNo = 1; //实际页号
private int pageSize = 15; //每页记录数
private int recTotal = 0; //总记录数
public List getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return (0==pageSize)?10:pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getRecTotal() {
return recTotal;
}
public void setRecTotal(int recTotal) {
this.recTotal = recTotal;
}
public int getPageTotal() {
int ret = (this.getRecTotal() - 1) / this.getPageSize() + 1;
ret = (ret<1)?1:ret;
return ret;
}
public int getFirstRec()
{
int ret = (this.getPageNo()-1) * this.getPageSize();// + 1;
ret = (ret < 1)?0:ret;
return ret;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货