首页 > 代码库 > 分页实现方法

分页实现方法

方法一  前台页面的定义分页展示  easy ui

pagination : true,
        pageSize : 5,
        pageList : [ 5, 10, 15, 20, 50 ],

每次页面操作或者查询请求CURD时 响应头部都会带着页面page和rows属性。所以后台可以指定接收参数 进行分页。

技术分享

例如 在初始化的时候。我们会创建一个page的 bean用来接收前台传入的page 和 row、

public class PageBean {
    
    private Integer page;
    private Integer rows;
    public Integer getPage() {
        return page;
    }
    public void setPage(Integer page) {
        this.page = page;
    }
    public Integer getRows() {
        return rows;
    }
    public void setRows(Integer rows) {
        this.rows = rows;
    }
    
    
}

再定义一个 pagination来方便json数组操作。

public class Pagination {
    
    private List<Object> rows;
    private String total;
    
    public List  getRows() {
        return rows;
    }
    public void setRows(List  rows) {
        this.rows = rows;
    }
    public String getTotal() {
        return total;
    }
    public void setTotal(String total) {
        this.total = total;
    }
            

}
Pagination p = new Pagination();
        p = dayRecruitService.find(page, ds,date_start,date_end,account);
        //注意序列化。这样可以直接引用,例如  row.customer.organization.organizationName
        String json = "{\"total\":" + p.getTotal() + " , \"rows\":"
            + JSON.toJSONString(p.getRows(),SerializerFeature.DisableCircularReferenceDetect) + "}";    
        return json;

直接调用find方法从数据库取出数据就可以了。结果会转化成json数据集然后显示在前台页面的。

 

我自己写了一个简单的分页实现,比上边方法直接,直观。

    @RequestMapping("/find_test")
    private void find_test(HttpServletRequest request,
            HttpServletResponse response) {
        //将登陆写死在数据中
        Account account = this.getStaticAccount();
        try {
            //获得后台的 page  row http会包含在post头中
            int currentPage = Integer.parseInt(request.getParameter("page"));        
            int pageSize    = Integer.parseInt(request.getParameter("rows"));
            //有查询条件的 序列成map来管理
            String date_start = request.getParameter("date_start")== null?"":request.getParameter("date_start");
            String date_end   = request.getParameter("date_end")== null?"":request.getParameter("date_end");
            String orgid     = request.getParameter("orgid")== null?"":request.getParameter("orgid");        
            String customerid     = request.getParameter("customer.id")== null?"":request.getParameter("customer.id");    
            Map<String, Object> searchmap = new HashMap<String, Object>();
            searchmap.put("date_start", date_start);
            searchmap.put("date_end", date_end);
            searchmap.put("orgid", orgid);
            searchmap.put("customer.id", customerid);                                
            //    分页显示
            List<DayRecruit> dayRecruits = this.dayRecruitService.findByPagination(currentPage , pageSize,searchmap,account);
            int total = this.dayRecruitService.getTotal();
            response.setContentType("text/html;charset=utf-8");
            //{"total":10 , "rows":[{},{}]}
            String json = "{\"total\":"+total+" , \"rows\":"+JSON.toJSONString(dayRecruits,SerializerFeature.DisableCircularReferenceDetect)+"}";
            response.getWriter().write(json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

牵扯到的hql关键语句为

            Query query = session.createQuery(hql); 
            query.setFirstResult((currentPage-1)*pageSize); //从第0条开始      
            query.setMaxResults(pageSize); //取出10条           
            List<DayRecruit> dayrecruit = query.list();    
            return dayrecruit;

 

分页实现方法