strtus2+hibernate查询数据表art中的数据并实现分页,很乱,如何梳理其中的逻辑关系?

完全不知道写的对不对,也不知道怎么进行,特别是action调用dao层方法的时候,dao层方法即要实现分页,又要列出数据库内容,具体应该怎么写,请大神帮助,解决加分!以下... 完全不知道写的对不对,也不知道怎么进行,特别是action调用dao层方法的时候,dao层方法即要实现分页,又要列出数据库内容,具体应该怎么写,请大神帮助,解决加分!
以下代码不完整,由于字数限制,省略无需检查的代码
查询功能OK
dao层的方法
private int pageSize = 5; //每页显示数据量,默认为5
private int pageno = 1; //当前页数,默认首页
private int pagecount = -1; //总页数
private int datacount = -1; //数量总数

// 跳到第一页
public List<Art> first(int pageno) {
pageno=1;
List<Art> list=new ArrayList<Art>();
Query query = session.createQuery("from Art");
query.setFirstResult((pageno-1)*this.pageSize).setMaxResults(this.pageSize);
list=query.list();
return list;
}
// 跳到最后一页
public List<Art> last(int pageno) {
Query query = session.createQuery("from Art");
query.setFirstResult((this.pageno-1)*this.pageSize).setMaxResults(this.pageSize);
List list = (List)query.list();
pagecount=list.size();
pageno = pagecount;
return list;
}
// 取得上一页
public void previous() {
if(pageno>1)
pageno--;
}
// 取得下一页
public void next() {
if (pageno < pagecount) {
pageno++;
}
}

/**
*set/get方法
*/
//得到当前页
public int getPageno() {
if(datacount==0){
return 1;
}else if(pageno<=1){
return 1;
}else if(pageno>=pagecount){
return pagecount;
}else{
return pageno;
}
}
//得到总页数
public int getPagecount() {
Query query = session.createQuery("from Art");
List list = (List)query.list();
this.datacount = list.size();
if(datacount%pageSize == 0){
this.pagecount = datacount/pageSize;
}else{
this.pagecount = datacount/pageSize + 1;
}
return this.pagecount;
}
//得到总条数
public int getDatacount() {
Query query = session.createQuery("from Art");
List list = (List)query.list();
this.datacount = list.size();
return this.datacount;
}

action类(adi是dao层new出来的)
//跳到第一页
public String toFirst()throws Exception{
int pageno=Integer.parseInt(request.getParameter("firstPage"));
List<Art> listArt=adi.first(pageno);
request.setAttribute("listart", listArt);
return "success";
}
//跳到最后一页
public String toLast()throws Exception{
//int lastPage= Integer.parseInt(request.getParameter("page"));
int pageno=Integer.parseInt(request.getParameter("lastPage"));
List<Art> listArt=adi.last(pageno);
request.setAttribute("listart", listArt);
return "success";
}
//上一页
public void toPrevious()throws Exception{
adi.previous();
}
//下一页
public void toNext()throws Exception{
adi.next();
}
展开
 我来答
RookiePHP
2013-10-18 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:104万
展开全部
别这样写,你动态传入nowpage和pagesize就行,一个方法就够了,写个page类计算有多少页,偏移量等
追问
好吧,按照你说的思路,倒腾了好久,弄出来了,谢谢!
抱爱的人睡
2013-10-18 · TA获得超过865个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:146万
展开全部

我这里有一个例子是关于分页的,你可以看看哈,没有你写的这么麻烦!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式