查询结果用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;
查询结果用Object类或其数组的List接收的更多相关文章
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- Object类和String类
Object类 Object类是Java语言中的根类,即所有类的父类. equals方法 返回值类型为:boolean类型 用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较. 例子: ...
- Java的API及Object类、String类、字符串缓冲区
Java 的API 1.1定义 API: Application(应用) Programming(程序) Interface(接口) Java API就是JDK中提供给开发者使用的类,这些类将底层的代 ...
- java面试记录三:hashmap、hashtable、concurrentHashmap、ArrayList、linkedList、linkedHashmap、Object类的12个成员方法、消息队列MQ的种类
口述题 1.HashMap的原理?(数组+单向链表.put.get.size方法) 非线程安全:(1)hash冲突:多线程某一时刻同时操作hashmap并执行put操作时,可能会产两个key的hash ...
- Java:不得不知的Object类
目录 一.equals 1.equals与==有啥区别? 2.equals方法的规范 3.instanceof 和getClass() 4.其他总结 二.hashCode 1.hashCode的规范 ...
- Java的常用类——Object类、String类
Java的JDK中提供给我们很多封装好的类就是Java API,可以直接调用. Java 的API(API: Application(应用) Programming(程序) Interface(接口) ...
- Object类和常用方法
Object类是java语言的根类,要么是一个类的直接父类,要么就是一个类的间接父类.所有对象(包括数组)都实现这个类的方法. 引用数据类型:类/接口/数组,引用数据类型又称之位对象类,所谓的数组变量 ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
随机推荐
- [MySQL] MySQL x64 下载地址
MySQL http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.14-winx64.ziphttp://dev.mysql.com/get/D ...
- MVC4.0 IIS 7.5 详细错误 - 404.0 - Not Found
出现环境:win7 + IIS7.5 问题如下: 1.IIS的根节点->右侧“ISAPI和CGI限制”->把禁止的DotNet版本项设置为允许 如果不行就进行下一步 2.选择站点-> ...
- 常见的几个js疑难点,match,charAt,charCodeAt,map,search
JavaScript match() 方法 定义和用法 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastI ...
- iOS - ShareSDK第三方分享(图文和视频)和登录
由于近期工作需要自己抽时间搞了一下第三方分享,这里使用的是shareSDK的第三方,在使用的过程中有一些心得和体会,特在此和大家分享一下~ 1.在经过将近一周时间的开发,终于搞定ios分享了. 2.由 ...
- 9.7 Django 书单列表页面
昨天的迭代版本,增加了编辑出版社,编辑列表,增添了返回页面! 具体的看 github : https://github.com/TrueNewBee/pythonDemo 看一下效果图: 整体来说还是 ...
- 如何写好PPT
怎样写好ppt? 阿里巴巴矢量图标库 优品PPT SmartArt PPT美化大师
- MySQL在linux上的source code安装方法(configure)
1.建立操作系统用户和组 [root@faspdev ~]# groupadd mysql [root@faspdev ~]# useradd -g mysql mysql 2.解压安装文件,进入解压 ...
- Ubuntu下安装vsftpd
1.sudo apt-get install vsftpd 2.修改配置文件 sudo gedit /etc/vsftpd.conf write_enable=YES ls_recurse_enabl ...
- Animator Override Controller学习及性能测试
本文由博主(YinaPan)原创,转载请注明出处: http://www.cnblogs.com/xsln/p/Animator_Override_Controller.html 一.Animator ...
- javascript php 数组 json 对比 总结
看到这个博客,终于明白JavaScript 里只有一种 Array,不存在索引数组和关联数组. 1.在js中所有要素都是继承自Object对象的,任何对象都能通过obj["name" ...