`
lancijk
  • 浏览: 384415 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDBC 取一个结果集得简单处理方法

    博客分类:
  • Java
 
阅读更多

 

1:首先可以看下SQL语句

select task.task_code_id as task_code_id  ,count(task.id) as distributedCount,  
(select count(1)  from t_approval_task t1 where t1.approval_status is null and task.task_code_id = t1.task_code_id ) as waitCount, 
(select count(1)  from t_approval_task t1 where t1.approval_status=1 and task.task_code_id = t1.task_code_id  ) as passCount, 
(select count(1)  from t_approval_task t1 where t1.approval_status=0 and task.task_code_id = t1.task_code_id ) as unpassCount, 
(select count(1)  from t_approval_task t1 where t1.approval_status=-1  and task.task_code_id = t1.task_code_id) as suspendCount 
from t_approval_task task where 1=1 GROUP BY  task.task_code_id ORDER BY  task.task_code_id

 

 

2:然后导入的 Import

 

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;

 

 

3:将jdbcTemplate 注入进service方法

 

@Autowired
private JdbcTemplate jdbcTemplate ;

 

4:然后最后是取结果集

final List<Map> list=new ArrayList<Map>();
		jdbcTemplate.query(sb.toString(), new Object[0], new RowCallbackHandler(){
			public void processRow(ResultSet rs) throws SQLException {
				while(rs.next()){
					Map map=new HashMap();
					map.put("taskCodeId", rs.getObject("task_code_id"));
					map.put("distributedCount", rs.getObject("distributedCount"));
					map.put("waitCount", rs.getObject("waitCount"));
					map.put("passCount", rs.getObject("passCount"));
					map.put("unpassCount", rs.getObject("unpassCount"));
					map.put("suspendCount", rs.getObject("suspendCount"));
					list.add(map);	
				}
			}
		});

 

 

由于第一取不到数据.

直接:

final List<Map> list=new ArrayList<Map>();
		jdbcTemplate.query(sb.toString(), new Object[0], new RowCallbackHandler(){
			/* (non-Javadoc)
			  * 这里会出现一个BUG,就是第一条取不到.然后就强制把游标指向第一条.
			 * @see org.springframework.jdbc.core.RowCallbackHandler#processRow(java.sql.ResultSet)
			 */
			public void processRow(ResultSet rs) throws SQLException {
				if(rs.first()){
					rs.first(); //直接将游标指向第一个条记录.然后往下判断 .取到了第一条数据
					Map map=new HashMap();
					map.put("taskCodeId", rs.getObject("task_code_id"));
					map.put("distributedCount", rs.getObject("distributedCount"));
					map.put("waitCount", rs.getObject("waitCount"));
					map.put("passCount", rs.getObject("passCount"));
					map.put("unpassCount", rs.getObject("unpassCount"));
					map.put("suspendCount", rs.getObject("suspendCount"));
					list.add(map);	
									while(rs.next()){
						Map map2=new HashMap();
						map2.put("taskCodeId", rs.getObject("task_code_id"));
						map2.put("distributedCount", rs.getObject("distributedCount"));
						map2.put("waitCount", rs.getObject("waitCount"));
						map2.put("passCount", rs.getObject("passCount"));
						map2.put("unpassCount", rs.getObject("unpassCount"));
						map2.put("suspendCount", rs.getObject("suspendCount"));
						list.add(map2);	
					}
				}
			}
		}); 

  

分享到:
评论
1 楼 pigming 2012-01-08  
有些数据库游标不能后退,rs.first()可能无效

相关推荐

    JAVA面试题最全集

    写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。 3.数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字...

    quartz的分布式调度大致分两种方式实现

    当Triggers的触发时间发生时,获取任务的第一个节点(通过在其上放置一个锁定)是将触发它的节点。 3.当其中一个节点在执行一个或多个作业期间失败时发生故障切换。当节点出现故障时,其他节点会检测到该状况并识别...

    大数据流处理框架介绍.pdf

    ⼤数据流处理框架介绍 ⼤数据流处理框架介绍 实时流处理简单概述:实时是说整个流处理相应时间较短,流式计算是说数据是源源不断的,没有尽头的。实时流处理⼀般是将业务系 统产⽣的数据进⾏实时收集,交由流处理...

    最新Java面试宝典pdf版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典2010版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 17.介绍一下Hibernate的二级缓存 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message 属性, ...

    Java面试笔试资料大全

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    java面试宝典2012

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 135 17.介绍一下Hibernate的二级缓存 135 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    DBKING使用指南

    所有的核心接口都在一个类里边,这个类是DbKing,代码不过1000行,却提供了大量的高质量功能方法,使用方法更是一目了然的简单。DbKing核心只依赖于JDBC驱动类,十分的轻量级,易于使用。  2、避免数据库连接...

    JAVA面试宝典2010

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典-经典

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    java面试题大全(2012版)

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Java面试宝典2012版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message...

    Java面试宝典2012新版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    JAVA上百实例源码以及开源项目源代码

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA 范例大全 光盘 资源

    实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见问题 找不到类文件 6 常见问题 语法错误 7 第2章 Java基础语法 9 实例4 变量和常量 9 实例5 基本数据类型转换 10 实例6 ...

Global site tag (gtag.js) - Google Analytics