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

 

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);	
					}
				}
			}
		}); 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值