/** * 获取分页参数 * * @param params RowBounds参数 * @return 返回Page对象 */ public Page getPage(Object params) { Page page = getLocalPage(); if (page == null) { if (params instanceof RowBounds) { RowBounds rowBounds = (RowBounds) params; if (offsetAsPageNum) { page = new Page(rowBounds.getOffset(), rowBounds.getLimit(), rowBoundsWithCount); } else { page = new Page(rowBounds, rowBoundsWithCount); // offsetAsPageNum=false的时候,由于PageNum问题,不能使用reasonable,这里会强制为false page.setReasonable(false); } } else { page = getPageFromObject(params); } setLocalPage(page); } // 分页合理化 if (page.getReasonable() == null) { page.setReasonable(reasonable); } // 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果 if (page.getPageSizeZero() == null) { page.setPageSizeZero(pageSizeZero); } return page; }
/** * 对象中获取分页参数 * * @param params * @return */ public static Page getPageFromObject(Object params) { int pageNum; int pageSize; MetaObject paramsObject = null; if (params == null) { throw new NullPointerException("分页查询参数params不能为空!"); } if (hasRequest && requestClass.isAssignableFrom(params.getClass())) { try { paramsObject = SystemMetaObject.forObject(getParameterMap.invoke(params, new Object[] {})); } catch (Exception e) { // 忽略 } } else { paramsObject = SystemMetaObject.forObject(params); } if (paramsObject == null) { throw new NullPointerException("分页查询参数params处理失败!"); } try { pageNum = Integer.parseInt(String.valueOf(getParamValue(paramsObject, "pageNum", true))); pageSize = Integer.parseInt(String.valueOf(getParamValue(paramsObject, "pageSize", true))); } catch (NumberFormatException e) { throw new IllegalArgumentException("分页参数不是合法的数字类型!"); } Object _count = getParamValue(paramsObject, "count", false); boolean count = true; if (_count != null) { count = Boolean.valueOf(String.valueOf(_count)); } Page page = new Page(pageNum, pageSize, count); Object reasonable = getParamValue(paramsObject, "reasonable", false); if (reasonable != null) { page.setReasonable(Boolean.valueOf(String.valueOf(reasonable))); } Object pageSizeZero = getParamValue(paramsObject, "pageSizeZero", false); if (pageSizeZero != null) { page.setPageSizeZero(Boolean.valueOf(String.valueOf(pageSizeZero))); } return page; }