`
lancijk
  • 浏览: 388331 次
  • 性别: 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()可能无效

相关推荐

    jdbc资料jdbc资料jdbc资料pdf

    JDBC提供了与数据库建立连接、发送SQL语句并处理结果的基本方法。 - **接口定义**:JDBC接口由Sun公司(现在是Oracle的一部分)定义,定义了一组标准接口。 - **实现方式**:具体的实现是由各个数据库厂商提供的,...

    jdbc+serlvet分页查询代码

    【标题】"jdbc+serlvet分页查询代码"涉及的知识点主要集中在Java数据库连接(JDBC)和Servlet两个核心技术上,它们是Web应用程序中处理数据和交互的关键组件。 **JDBC(Java Database Connectivity)** JDBC是Java...

    Oracle12C驱动包JDBC

    - **处理结果集**:通过`java.sql.ResultSet`对象获取查询结果并遍历数据。 - **事务管理**:利用`java.sql.Connection`的`commit()`和`rollback()`方法控制事务。 - **连接池管理**:可以集成到应用服务器的连接池...

    jdbc.zip_jdbc学生管理_jdbc系统

    在这个“jdbc.zip_jdbc学生管理_jdbc系统”中,我们主要探讨的是如何利用JDBC技术实现一个简单的学生管理系统。 首先,理解JDBC的基本步骤至关重要: 1. **加载数据库驱动**:在Java程序中,我们需要通过`Class....

    Hibernate and JDBC

    JDBC使Java应用与关系型数据库的交互变得简单直观。当一个Java应用需要访问数据库时,需要完成以下步骤: 1. **打开连接**:建立与数据库的连接。 2. **发送SQL查询**:使用JDBC驱动向数据库发送SQL语句。 3. **...

    Sqlserver JDBC jar包

    5. **处理结果集**:`ResultSet`对象包含了查询的结果,你可以遍历它以获取数据并进行处理。 6. **关闭资源**:最后,记得关闭打开的资源,以防止内存泄漏和资源浪费: ```java conn.close(); ``` 在使用过程中...

    Android使用JDBC连接本地数据库

    下面是一个简单的使用SQLite JDBC在Android中执行查询的示例: ```java try { Class.forName("org.sqlite.JDBC"); Connection conn = DriverManager.getConnection("jdbc:sqlite:/data/data/your.package.name/...

    java开发中JDBC连接数据库代码和步骤

    供对这些行中数据的访问。每调用一次ResultSet的next()方法,游标就向结果集中的下一行移动。...这个示例展示了从加载驱动到处理结果的整个过程,包括异常处理和资源清理,是一个较为完整的JDBC使用示例。

    iBATIS3与JDBC性能对比

    2. **自动结果映射**:iBATIS可以自动将查询结果映射到Java对象,省去了手动处理结果集的步骤,提高了开发效率。 3. **事务管理**:iBATIS提供了简单的事务管理,可以方便地进行回滚和提交操作,简化了事务控制。 ...

    本人理解hibernate 与 JDBC 的最本质区别

    Hibernate 是一个对象关系映射(ORM)框架,而 JDBC(Java Database Connectivity)是 Java 语言中用于与数据库交互的标准 API。两者的本质区别主要体现在以下几个方面: 1. **编程模型**: - **JDBC**:使用 ...

    jdbc连接access

    以下是一个简单的JDBC连接Access数据库的步骤: 1. **加载驱动**:通过`Class.forName()`方法加载JDBC驱动。例如: ```java Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ``` 2. **创建数据库连接**:使用`...

    JDBC基础教程之语句.doc

    此方法返回一个`ResultSet`对象,其中包含了查询的结果。 ```java ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2"); ``` 2. **executeUpdate**:用于执行`INSERT`、`UPDATE`或`DELETE`语句...

    基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip

    2. Spring JDBC:Spring JDBC模块是Spring框架的一部分,它提供了一个更高级的抽象层来处理JDBC,使得开发者无需直接与JDBC API打交道,减少了错误和冗余代码。Spring JDBC提供了事务管理、异常转换等功能,简化了...

    commons-dbutils的jar包,1.3和1.7两个版本合集

    这个库提供了简单且线程安全的方法来处理数据库连接、执行SQL查询和更新,并处理结果集。它作为Apache Commons项目的一部分,是Java开发者常用的一个工具,能够减少编写重复的JDBC模板代码。 标题提到的"commons-...

    web 开发 mysql+jdbc 实现信息分页显示

    以下是一个简单的示例: ```java import java.sql.*; public class PageDemo { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/dbname"; String user = "username"; ...

    Java的Jtable、从数据库取数据显示在表格中

    这里给出了一个连接字符串示例 `String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=access\\test.mdb";`,其中指定了数据库驱动、路径等信息。 - 注意:实际开发中应避免硬编码数据库连接...

    jsp通用分页

    总结来说,`jsp通用分页`的核心是利用JDBC的滚动结果集和数据库的分页特性,结合适当的接口设计,实现一个跨数据库的分页机制。这既要求对JDBC和数据库有深入理解,也需要考虑代码的灵活性和性能优化。

    Java读取Excel文件的几种方法.doc

    // 处理结果集 ``` 缺点是这种方法依赖于系统环境,可能在某些环境中不适用。 2. **jxl.jar** jxl.jar 是一个开源库,可以在所有支持 Java 虚拟机的操作系统上使用,无需依赖其他第三方库。它提供了直接操作 ...

    JSP简单的分页界面的实现

    本教程将详细介绍如何在JSP中实现一个简单的分页界面,以帮助初学者掌握这一关键技能。 首先,我们要理解分页的基本概念。分页通常涉及到两个主要部分:前端展示和后端逻辑。前端负责展示分页链接和当前页的信息,...

    java三种方法连接SQL数据库

    连接SQL数据库的基本步骤包括加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句和处理结果集。 ```java // 加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // ...

Global site tag (gtag.js) - Google Analytics