OFBiz--分页查询方法(转)
public static Map<String, Object> getXXXList(DispatchContext ctx,Map<String, ? extends Object> context){ Delegator delegator = ctx.getDelegator(); String prizeName= (String) context.get("prizeName");//从前台接收的参数 Integer rows = (Integer) context.get("rows");//分页信息,每页几行 Integer page = (Integer) context.get("page");//分页信息,当前第几页,这两个都是从前台传来的,我们用的easyUI int total = 0 ; EntityListIterator eli = null;//专门用于分页的迭代器类对象 List<GenericValue> winnerList = FastList.newInstance(); List<Map<String, Object>> result = FastList.newInstance(); //条件 List<EntityCondition> conds = FastList.newInstance();//查询条件 conds.add(EntityCondition.makeCondition("prizeId",EntityOperator.NOT_EQUAL,"")); if (UtilValidate.isNotEmpty(prizeName)) {//如果这个不为空的话也加入and查询条件,就是按这个筛选一下 conds.add(EntityCondition.makeCondition("prizeName",EntityOperator.LIKE,"%"+prizeName+"%")); } try {//分页主要完成代码,find方法可以返回一个迭代器 eli = delegator.find("WinnerList", EntityCondition.makeCondition(conds,EntityOperator.AND), null, null, UtilMisc.toList("openId"), null); //是否分页,看是否有分页信息传来 if(rows != null && page != null){ winnerList = eli.getPartialList(PageUtils.startNum(page, rows), rows);//分页的话调用这个方法返回List,第一个参数是第几页,第二个参数是一页多少数据 }else{ winnerList = eli.getCompleteList();//不分页的话调用这个方法返回List } //计算总条数 total = eli.getResultsSizeAfterPartialList();//这个可以返回总共的条数,而不是当前页的条数 for (GenericValue gv : winnerList) { Map<String, Object> map = gv.getAllFields(); map.put("openId", gv.getString("openId")); map.put("nickName", gv.getString("nickName")); map.put("contactName", gv.getString("contactName")); map.put("contactMobile", gv.getString("contactMobile")); map.put("idCard", gv.getString("idCard")); map.put("prizeName", gv.getString("prizeName")); result.add(map); } } catch (GenericEntityException e) { Debug.logError(e.getMessage(), MODULE); return RetUtils.retFalse(PropertiesUtils.getErrMessage("ERROR_QUERY_WINNER_FAILED")); }finally{ if(eli!=null){ try { eli.close();//用这个千万一定要记得关闭!!!!! } catch (GenericEntityException e) { Debug.logWarning(e, e.getMessage(), MODULE); } } } return RetUtils.retTrue(result, total);//一定要把总的记录条数也返回,这个是封装了一个方法,其实就是把total也put进一个map就好了 }
转自:https://blog.csdn.net/songhy9286/article/details/67634745