码迷,mamicode.com
首页 > 其他好文 > 详细

Hibiernate+struts2分页(一)

时间:2018-08-06 15:19:06      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:page   .class   from   product   return   []   查询   get   构建   

如果使用Hibernate的话,她里面的Query有这么两个方法,可以查询出第x到第y条的信息,由此我们可以只要知道,只要有当前页的页码(page)和总记录条数(number),就可以实现分页查询。Query两个方法如下:

Query query = session.createQuery("from Products");
query.setFirstResult();// (当前页面-1)X每页条数
query.setMaxResults(); // 每页的条数

当然,我这个是用Hibernate+struts2做的,首先需要构建自己的分页类FenYe.class

分页类:

public class FenYe {
   private int first = 0;       // 第一条记录
   private int max = 5;       // 每页显示的记录条数
   private Integer page;     // 输入页数
   private int curr_page;    // 当前页数
   private int pages;        // 总的页数
   private Integer number; // 总的记录数

   //     第一页
   public void firstListener() {
          page=1;                                     //输入页=第一页
          first=0;                                       //第一条记录=0
          curr_page = page;                      //当前页=输入页
   }

   // 最后一页
   public void lastListener() {
          page = pages;                              //输入页=总页数
          curr_page=page;                         //当前页=输入页
          first = (pages - 1) * max;             //第一条记录=(当前页-1)*每页显示记录的条数
   }

   //中间页
   public void gotoListener() {
          curr_page = page;                        //当前页=输入页
          first = (curr_page - 1) * max;       //第一条记录=(当前页-1)*每页显示记录的条数
   }

    // 判断是否是第一页或者最后一页
    public FenyeService fenYe(Integer page, Integer number) {
        // 设定输入的页数
        this.setPage(page);
        // 设定总记录数
        this.setNumber(number);
        // 初始化总页数
        this.setPages(number);

        if (page > 0 && page <= this.pages) { // 如果输入页数>0<总的页数
            this.gotoListener();
        } else if (page <= 0 || number == 0) { // 如果输入页数<0或者没有数据的时候
            this.firstListener();
        } else if (page > this.pages) { // 如果输入页数>总页数
            this.lastListener();
        }

        // 返回自身
        return this;
    }

    public static void main(String[] args) {
        FenYe fenye = new FenYe();
        fenye.setNumber(11);
        fenye.setPage(3);
        fenye.fenYe();

        System.out.println("第一条记录first:" + fenye.getFirst());
        System.out.println("每页显示的记录数max:" + fenye.getMax());
        System.out.println("输入页数page:" + fenye.getPage());
        System.out.println("当前页数curr_page:" + fenye.getCurr_page());
        System.out.println("总页数pages:" + fenye.getPages());
        System.out.println("总记录条数number:" + fenye.getNumber());
    }

    ...
    中间的get、set方法就不贴出来了
    ...
    /*
     * 
     * 对pages的set方法作出如下修改
     * 
     * 计算总页数
     * 
     * 如果被整除:总页数=总数据条数/每页显示的条数
     * 
     * 如果有余数:总页数=总数据条数/每页显示的条数(取整数)+1
     */
    public void setPages(int number) {
        this.pages = number % max == 0 ? number / max : number / max + 1;
    }
}

Hibiernate+struts2分页(一)

标签:page   .class   from   product   return   []   查询   get   构建   

原文地址:http://blog.51cto.com/1197822/2155236

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!