分页的实现

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

        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发疯的man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值