分页的实现

来源:互联网 发布:照片打分软件 编辑:程序博客网 时间:2024/05/01 20:51

需要new一个类

        //1.总页数            private int totalPage;        //2.页码                private int pageNo;        //3.每页显示记录数         private int pageSize;        //4.总条数            private int totalNum;        //5.记录集            private List item;        public Page( int pageNo, int pageSize, int totalNum,                List item) {            this.pageNo = pageNo;            this.pageSize = pageSize;            this.totalNum = totalNum;            this.item = item;            int temp = totalNum/pageSize;            this.totalPage = (totalNum%pageSize == 0 ? temp : (temp +1));        }

dao层实现

public Page findObjects(QueryHelper queryHelper,int pageNo,int pageSize) {        Query query = this.getSession().createQuery(queryHelper.getQueryHql());        List<Object> list = queryHelper.getParams();        for(int i = 0;i<list.size();i++){            query.setParameter(i, list.get(i));        }        if(pageNo == 0){            pageNo = 1;        }                //获取总记录数                ScrollableResults scroll = query.scroll();                scroll.last();                int totalNum = scroll.getRowNumber() + 1;                //分页                query.setFirstResult((pageNo-1)*pageSize);                query.setMaxResults(pageSize);                List<T> item = query.list();                Page page = new Page(pageNo, pageSize, totalNum, item);                return page;    }

封装的tool类

public class QueryHelper {        //查询参数        private List<Object> params = new ArrayList<Object>();        //from子句        private String fromCaluse = "";        //where子句        private String whereCaluse = "";        //orderBy子句        private String orderByCaluse = "";        public static final String ORDER_BY_DESC = "desc";        public static final String ORDER_BY_ASC = "asc";        //form Info i        public QueryHelper(Class clazz,String as) {            fromCaluse = "from " + clazz.getSimpleName() + " " + as;        }        //and i.title like ?         public void addQuery(String queryStr,Object param){            //判断是否是第一个查询条件            if(whereCaluse.length() > 0){                whereCaluse += " and " + queryStr;            }else{                whereCaluse += " where " + queryStr;            }            //添加查询参数            params.add(param);        }        //返回查询语句        public String getQueryHql(){            return fromCaluse + whereCaluse + orderByCaluse;        }        //返回符合查询语句的记录数        public String getQueryCountHql() {            return "select count(*) " + fromCaluse + whereCaluse + orderByCaluse;        }        //返回查询参数        public List<Object> getParams(){            return params;        }        public void addOrderBy(String order,String sort) {            //判断是否是第一个查询条件            if (orderByCaluse.length() > 0) {                orderByCaluse += "," + order +" " + sort;            } else {                orderByCaluse += " order by " + order+" " + sort;            }        }}