分页的实现

需要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;
            }

        }
}
上一篇:asp.net中条件查询+分页


下一篇:飞单机器人管理系统项目介绍无双飞单机器人