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

posted @ 2018-10-15 17:08  Bob.Xie  阅读(292)  评论(0编辑  收藏  举报