项目中用到的公用分页类

package jy.page.module;

import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class PageManagerimple extends HibernateDaoSupport implements PageManager{
private PageModule pm = new PageModule();

public PageModule getPm() {
return pm;
}

public void setPm(PageModule pm) {
this.pm = pm;
}

@Override
public PageModule findByPage(String classname, int page,
int pagesize) {
String queryCountHql = "select count(*) from "+classname;

Query query = getSession().createQuery(queryCountHql);
int total = ((Long)query.uniqueResult()).intValue();
pm.setPageSize(pagesize);

//为total和totalPage赋值
int count = total / pagesize;
if (total > 0) {
pm.setTotal(total);

if (total % pagesize > 0)
count++;
pm.setTotalPage(count);
} else {
pm.setTotalPage(0);
}

if(page<1)
page=1;
if(page>count)
page=count;
int offset=(page-1)*pagesize;
//判断是否有前一页
if(offset>0)
pm.setHasPrePage(true);
else
pm.setHasPrePage(false);
//判断是否有后一页
if(offset+pagesize>=total)
pm.setHasNextPage(false);
else
pm.setHasNextPage(true);
pm.setCurrentPage(page);
pm.setPageSize(pagesize);

String que="from "+classname;
pm.setData( getSession().createQuery(que)
.setFirstResult(offset)
.setMaxResults(pagesize)
.list());
return pm;
}

@Override
public PageModule findByPage(String classname, int page, int pagesize,
String string) {
String queryCountHql = "select count(*) from "+classname+" as p where "+string;

Query query = getSession().createQuery(queryCountHql);
int total = ((Long)query.uniqueResult()).intValue();
pm.setPageSize(pagesize);

//为total和totalPage赋值
int count = total / pagesize;
if (total > 0) {
pm.setTotal(total);

if (total % pagesize > 0)
count++;
pm.setTotalPage(count);
} else {
pm.setTotalPage(0);
}

if(page<1)
page=1;
if(page>count)
page=count;
int offset=(page-1)*pagesize;
//判断是否有前一页
if(offset>0)
pm.setHasPrePage(true);
else
pm.setHasPrePage(false);
//判断是否有后一页
if(offset+pagesize>=total)
pm.setHasNextPage(false);
else
pm.setHasNextPage(true);
pm.setCurrentPage(page);
pm.setPageSize(pagesize);

String que="from "+classname+" as p where "+string;
if(!this.getHibernateTemplate().find(que).isEmpty())
pm.setData( getSession().createQuery(que)
.setFirstResult(offset)
.setMaxResults(pagesize)
.list());
else
pm.setData(null);
return pm;
}

@Override
public PageModule findByPage(String classname, int page, int pagesize,
String string, String paixu) {
String queryCountHql = "select count(*) from "+classname+" as p where "+string;

Query query = getSession().createQuery(queryCountHql);
int total = ((Long)query.uniqueResult()).intValue();
pm.setPageSize(pagesize);

//为total和totalPage赋值
int count = total / pagesize;
if (total > 0) {
pm.setTotal(total);

if (total % pagesize > 0)
count++;
pm.setTotalPage(count);
} else {
pm.setTotalPage(0);
}

if(page<1)
page=1;
if(page>count)
page=count;
int offset=(page-1)*pagesize;
//判断是否有前一页
if(offset>0)
pm.setHasPrePage(true);
else
pm.setHasPrePage(false);
//判断是否有后一页
if(offset+pagesize>=total)
pm.setHasNextPage(false);
else
pm.setHasNextPage(true);
pm.setCurrentPage(page);
pm.setPageSize(pagesize);

String que="from "+classname+" as p where "+string+paixu;
if(!this.getHibernateTemplate().find(que).isEmpty())
pm.setData( getSession().createQuery(que)
.setFirstResult(offset)
.setMaxResults(pagesize)
.list());
else
pm.setData(null);
return pm;
}
}



[size=x-large]使用说明[/size]


1.在你相应的action代码中加入四个属性,生成相应的set get 方法。
private PageModule pm; //分页模型类
private int page=1;//初始化页码
private PageManager pma;//分页管理类,用它来调用函数返回PageModule
private int number=1;//当前行号
2. 定义在action中定义分页方法如我在FunctionAction中定义了如下方法在sturts.xml进行配置。
public String findAllByPage(){
pm=pma.findByPage("Functions", page,15);//用pma调用函数。
//将Functions换成你要查询的类名称。page保持不变。15是每页查询出的条数,可自己设

number=((pm.getCurrentPage()-1)*pm.getPageSize())+1;
//为了在页面上显示从1开始的序号,所以设这这个变量,保存当前页的第一条的序号
return SUCCESS;
}
3. 在spring的配置文件applicationContext.xml中进行注入。在你的action的bean中对pma属性进行注入。

<bean id="functionAction" scope="prototype"
class="jy.quanxian.function.action.FunctionAction">
<property name="fs" ref="functionService"></property>
<property name="pma" ref="pageManager"></property>
</bean>
黑色斜体的应该是你的action的bean 红色的是关键的注入地方。如果你没有改变参数的名称这样就对了。

4.jsp页面的改变。
Jsp页面的代码可以将operateFunction.jsp全部拷贝到你的页面中对相应的标题之类的进行修改。还有字段什么的。关键的地方如下。
代码别怕长(也不是很长)红色的是注释 ,看那里就行了。
<s:iterator value="pm.data" id="ls" status="st">这不用改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值