查询结果用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的使用,对 ...
随机推荐
- Java虚拟机五 堆的参数配置
堆空间是Java进程的重要组成部分,几乎所有的应用相关的内存空间都和堆有关. 1.最大堆和初始堆的设置 当Java程序启动时,虚拟机就会分配一块初始堆空间,使用参数 -Xms 指定这块空间的大小.一般 ...
- 解决IE6下透明图片有背景的问题
描述,透底的图片,在其他浏览器中效果: 在IE6中的效果: 1.改图片 IMG 换用gif格式的图片,但是这样的话图片效果不好: 想让IE6用gif的图片,其他浏览器用png图片,但是只有IE有这样 ...
- Django---项目如何创建
首先是安装好Django,找到 Scripts 目录配置环境变量: 只要添加到环境变量,在任何目录执行 django-admin startproject mysite 就可以创建 Django 程序 ...
- poj 2125 Destroying The Graph 最小割+方案输出
构图思路: 1.将所有顶点v拆成两个点, v1,v2 2.源点S与v1连边,容量为 W- 3.v2与汇点连边,容量为 W+ 4.对图中原边( a, b ), 连边 (a1,b2),容量为正无穷大 则该 ...
- UVA 11768 - Lattice Point or Not
首先本题需要用到扩展欧几里得算法…… 关于exgcd算法的一点简略证明: 那么,对于函数exgcd(a,b)=(d,x,y),其中d满足d=gcd(a,b); (x,y)满足ax+by=d; 则exg ...
- Apple Pay的实现
首先是搜到的大神写的全套知识点:http://www.jianshu.com/p/8d7b86f1d142 http://www.cnblogs.com/dashunzi/archive/2016/0 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- a loosely strongly typed language
JavaScript: The Definitive Guide, Sixth Edition by David Flanagan As explained above, the following ...
- LoadRunner-循环
Edit Runtime Settings ,设置循环次数 在Open Parameter List 里设置循环参数,比如用例为删除notice,每执行一次用例id值不同. 把id替换为参数,并在参数 ...
- lua打包exe【转】
可以使用srlua这个工具把lua脚本打包成exe,提供了lua 5.2.5.1.5.0的版本对应的源码. 不过我懒得编译了,发现“白的菜”替懒人编译好了(感谢),点击下载. 解压后出现“luapac ...