zoukankan      html  css  js  c++  java
  • 查询结果用Object类或其数组的List接收

    查询结果用Object数组接收并返回前端获取和展示,很多时候是封装的方法直接用实体类接收和返回,当所查询出的值包含不只一个实体类的属性值时,返回某个实体类不满足要求,或者不需要此实体类属性太多,返回整个实体类效率太低,这时用Object[]接收最莱斯:

              String codename = receiveData.getParam("codename".toUpperCase());
                    String sql = "select itemvalue,itemtext from code_items where codeid = (select codeid from code_main where codename = '";
                    sql += codename;
                    sql += "') order by itemvalue";
                    List<Object[]> objlist = service.getResultListNative(sql);
                    List<JSONObject> list = new ArrayList<JSONObject>();
                    if (objlist != null && objlist.size() > 0) {
                        for (Object[] obj : objlist) {
                            JSONObject jsonObject = new JSONObject();
                            jsonObject.accumulate("ItemValue", obj[0]);
                            jsonObject.accumulate("ItemText", obj[1]);
                            list.add(new JSONObject().accumulate("codeiteminfo", jsonObject));
                        }
                        returndata.putUserData("ItemList", JsonUtil.listToJson(list));
                    }

    其中只需要两个字段的值,返回整个实体效率太低,并且select * 的查询语句尽量要避免;

     e.g.2:

           StringBuffer sql = new StringBuffer();    
                sql.append("SELECT COALESCE(queue.QueueLen, 0) QueueLen, COALESCE(window.WinCOunt, 0) WinCount ");
                sql.append(" FROM (SELECT TASKTYPEGUID FROM Audit_Queue_Window_TaskType where WINDOWGUID='" + windowGuid
                        + "') win");
                sql.append(" LEFT JOIN");
                sql.append(" (SELECT TASKGUID, COUNT(1) QueueLen FROM AUDIT_QUEUE  WHERE STATUS = '0' and "
                        + this.getCommonDateSQL());
                sql.append(" GROUP BY TASKGUID ) queue ON win.TASKTYPEGUID = queue.TASKGUID");
                sql.append(" LEFT JOIN");
                sql.append(" (SELECT TASKTYPEGUID, COUNT(1) WinCOunt FROM AUDIT_WINDOW_USER u INNER JOIN Audit_Queue_Window_TaskType t ON u.WINDOWGUID = t.WINDOWGUID");
                sql.append(" WHERE u.IS_ONUSER = 1 GROUP BY t.TASKTYPEGUID ) window ON window.TASKTYPEGUID = win.TASKTYPEGUID and QueueLen<>0");

            // 语句查询字段多的不谈了,必须用Object类接收   

             List<Object> list = this.getResultListNative(sql.toString());

                  Integer len = 0;

            // 遍历Object对象,不是Object[]数组接收,要先转换成Object[]数组,方便通过下标获取查询的字段值

            for (Object object : list) {
              Object[] arr = (Object[]) object;
              len += (Integer)arr[0];
            }

    
    

    其中COALESCE是一个函数,作用是返回表达式中第一个非空表达式,如SELECT COALESCE(NULL,NULL,3,4,5) FROM dual,其返回结果为:3;

  • 相关阅读:
    .Net Remoting浅释
    初级SQL开发汇总指南
    WPF Navigation导航
    WPF Button的背景图片设置
    2015/9/20 Python基础(16):类和实例
    2015/9/19 Python基础(15):变量作用域及生成器
    2015/9/18 Python基础(14):函数式编程
    2015/9/17 Python基础(13):函数
    2015/9/15 Python基础(12):模块和包
    2015/9/10 Python基础(11):错误和异常
  • 原文地址:https://www.cnblogs.com/wmqiang/p/10524283.html
Copyright © 2011-2022 走看看