当前位置: 移动技术网 > IT编程>开发语言>Java > java-SSH2实现数据库和界面的分页

java-SSH2实现数据库和界面的分页

2019年07月22日  | 移动技术网IT编程  | 我要评论

江西财经大学百合网,四爪陆龟,全国法院被执行人信息查询

分页应该是在我们开发web应用时经常要做的工作,能够比较简洁的实现数据库和视图层的分页十分重要。

在数据库层利用hibernate进行数据库的分页,将从数据库中查询出的数据封装为javabean;在视图层就可以方便的实现分页。

创建pagebean

package com.fishing.common.bean; 
 
import java.util.list; 
@suppresswarnings("unchecked") 
public class pagebean { 
   
  private list list; // 要返回的某一页的记录列表 
 
  private int allrow; // 总记录数 
  private int totalpage; // 总页数 
  private int currentpage; // 当前页 
  private int pagesize; // 每页记录数 
 
   
  private boolean isfirstpage; // 是否为第一页 
  private boolean islastpage; // 是否为最后一页 
  private boolean haspreviouspage; // 是否有前一页 
  private boolean hasnextpage; // 是否有下一页 
 
  public list getlist() { 
    return list; 
  } 
 
  public void setlist(list list) { 
    this.list = list; 
  } 
 
  public int getallrow() { 
    return allrow; 
  } 
 
  public void setallrow(int allrow) { 
    this.allrow = allrow; 
  } 
 
  public int gettotalpage() { 
    return totalpage; 
  } 
 
  public void settotalpage(int totalpage) { 
    this.totalpage = totalpage; 
  } 
 
  public int getcurrentpage() { 
    return currentpage; 
  } 
 
  public void setcurrentpage(int currentpage) { 
    this.currentpage = currentpage; 
  } 
 
  public int getpagesize() { 
    return pagesize; 
  } 
 
  public void setpagesize(int pagesize) { 
    this.pagesize = pagesize; 
  } 
 
  /** */ 
  /** 
   * 初始化分页信息 
   */ 
  public void init() { 
    this.isfirstpage = isfirstpage(); 
    this.islastpage = islastpage(); 
    this.haspreviouspage = ishaspreviouspage(); 
    this.hasnextpage = ishasnextpage(); 
  } 
 
  /** */ 
  /** 
   * 以下判断页的信息,只需getter方法(is方法)即可 
   * 
   * @return 
   */ 
 
  public boolean isfirstpage() {   
    return (currentpage == 1);// 如是当前页是第1页   
  }   
  public boolean islastpage() {   
 return currentpage == totalpage; //如果当前页是最后一页   
}   
  public boolean ishaspreviouspage() {   
 return currentpage != 1; //只要当前页不是第1页   
}   
  public boolean ishasnextpage() {   
 return currentpage != totalpage; //只要当前页不是最后1页   
}   
  /** */ 
  /** 
   * 计算总页数,静态方法,供外部直接通过类名调用 
   * 
   * @param pagesize 
   *      每页记录数 
   * @param allrow 
   *      总记录数 
   * @return 总页数 
   */ 
  public static int counttotalpage(final int pagesize, final int allrow) { 
    int totalpage = allrow % pagesize == 0 ? allrow / pagesize : allrow 
        / pagesize + 1; 
    return totalpage; 
  } 
 
  /** */ 
  /** 
   * 计算当前页开始记录 
   * 
   * @param pagesize 
   *      每页记录数 
   * @param currentpage 
   *      当前第几页 
   * @return 当前页开始记录号 
   */ 
  public static int countoffset(final int pagesize, final int currentpage) { 
    final int offset = pagesize * (currentpage - 1); 
    return offset; 
  } 
 
  /** */ 
  /** 
   * 计算当前页,若为0或者请求的url中没有"?page=",则用1代替 
   * 
   * @param page 
   *      传入的参数(可能为空,即0,则返回1) 
   * @return 当前页 
   */ 
  public static int countcurrentpage(int page) { 
    final int curpage = (page == 0 ? 1 : page); 
    return curpage; 
  } 
} 

在dao的抽象接口basedao中添加方法:

public list queryforpage(final string hql, final int offset, 
      final int length); 
在dao的实现类jianshedwdaoimpl中实现方法
public list queryforpage(final string hql, final int offset, 
      final int length) { 
    list list = gethibernatetemplate().executefind(new hibernatecallback() { 
 
      public object doinhibernate(session session) 
          throws hibernateexception, sqlexception { 
        query query = session.createquery(hql); 
        query.setfirstresult(offset); 
        query.setmaxresults(length); 
        list list = query.list(); 
        return list; 
 
      } 
    }); 
 
    return list; 
  } 

在service抽象层接口jianshedwservice中添加方法:

public pagebean queryforpage(int pagesize,int currentpage);  

在service实现类中实现方法:

public pagebean queryforpage(int pagesize, int page) { 
    final string hql = "from jianshedwbean"; // 查询语句 
    int allrow = this.basedao.getallrowcount(hql); // 总记录数 
    int totalpage = pagebean.counttotalpage(pagesize, allrow); // 总页数 
    final int offset = pagebean.countoffset(pagesize, page); // 当前页开始记录 
    final int length = pagesize; // 每页记录数 
    final int currentpage = pagebean.countcurrentpage(page); 
    list<jianshedwbean> list = this.basedao.queryforpage(hql, offset, length); // "一页"的记录 
 
    // 把分页信息保存到bean中 
    pagebean pagebean = new pagebean(); 
    pagebean.setpagesize(pagesize); 
    pagebean.setcurrentpage(currentpage); 
    pagebean.setallrow(allrow); 
    pagebean.settotalpage(totalpage); 
    pagebean.setlist(list); 
    pagebean.init(); 
    return pagebean; 
 
  } 

在视图层action中建立分页模型

package com.fishing.action.lcq;  
import com.fishing.common.bean.jianshedwbean; 
import com.fishing.common.bean.pagebean; 
import com.fishing.service.lcq.jianshedwservice; 
import com.opensymphony.xwork2.actionsupport; 
 
@suppresswarnings("serial") 
public class getinfojsdwlistaction extends actionsupport { 
 
  private int page; // 第几页 
 
  private pagebean pagebean; // 包含分布信息的bean 
 
  private jianshedwbean jianshedwbean; 
  // private pagebean page; 
  private jianshedwservice jianshedwservice; 
 
  public int getpage() { 
    return page; 
  } 
 
  public void setpage(int page) { 
    this.page = page; 
  } 
 
  public pagebean getpagebean() { 
    return pagebean; 
  } 
 
  public void setpagebean(pagebean pagebean) { 
    this.pagebean = pagebean; 
  } 
 
  public jianshedwbean getjianshedwbean() { 
    return jianshedwbean; 
  } 
 
  public void setjianshedwbean(jianshedwbean jianshedwbean) { 
    this.jianshedwbean = jianshedwbean; 
  } 
 
  public jianshedwservice getjianshedwservice() { 
    return jianshedwservice; 
  } 
 
  public void setjianshedwservice(jianshedwservice jianshedwservice) { 
    this.jianshedwservice = jianshedwservice; 
  } 
 
  @override   
   public string execute() throws exception {   
     
   //分页的pagebean,参数pagesize表示每页显示记录数,page为当前页   
   this.pagebean = jianshedwservice.queryforpage(10, page);   
   return success; 
  } 
} 

在jsp中编写分页

<tr class="odd"> 
                          <td> 
                              
                          </td> 
                          <td> 
                            <s:if test="%{pagebean.currentpage == 1}">   
                           首页   上一页 
                          </s:if> 
                            <s:else> 
                              <a href="jianguan/getjsdwinfos.action?page=1">首页</a> 
                              <a 
                                href="jianguan/getjsdwinfos.action?page=<s:property value="%{pagebean.currentpage-1}"/>" />上一页</a> 
 
                            </s:else> 
                          </td> 
                          <td> 
                            <s:if test="%{pagebean.currentpage != pagebean.totalpage}"> 
 
                              <a 
                                href="jianguan/getjsdwinfos.action?page=<s:property value="%{pagebean.currentpage+1}"/>">下一页</a> 
                              <a 
                                href="jianguan/getjsdwinfos.action?page=<s:property value="pagebean.totalpage"/>">尾页 
                              </a> 
                            </s:if> 
                            <s:else>  
                           下一页 尾页  
                          </s:else> 
                          </td> 
 
                          <td> 
                            <div align="center"> 
                              页次 
                              <s:property value="pagebean.currentpage" /> 
                              / 
                              <s:property value="pagebean.totalpage" /> 
                                共 
                              <s:property value="pagebean.allrow" /> 
                              记录 
                            </div> 
                            <div align="center"></div> 
                          </td> 
                        </tr> 

 上面只是代码的实现,没有说明配置文件的配置,读者根据情况配置。

希望本文所述对你有所帮助,ssh2实现数据库和界面的分页内容就给大家介绍到这里了。希望大家继续关注我们的网站!想要学习java可以继续关注本站。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网