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);
}
}
}
});
分享到:
相关推荐
JDBC提供了与数据库建立连接、发送SQL语句并处理结果的基本方法。 - **接口定义**:JDBC接口由Sun公司(现在是Oracle的一部分)定义,定义了一组标准接口。 - **实现方式**:具体的实现是由各个数据库厂商提供的,...
【标题】"jdbc+serlvet分页查询代码"涉及的知识点主要集中在Java数据库连接(JDBC)和Servlet两个核心技术上,它们是Web应用程序中处理数据和交互的关键组件。 **JDBC(Java Database Connectivity)** JDBC是Java...
- **处理结果集**:通过`java.sql.ResultSet`对象获取查询结果并遍历数据。 - **事务管理**:利用`java.sql.Connection`的`commit()`和`rollback()`方法控制事务。 - **连接池管理**:可以集成到应用服务器的连接池...
在这个“jdbc.zip_jdbc学生管理_jdbc系统”中,我们主要探讨的是如何利用JDBC技术实现一个简单的学生管理系统。 首先,理解JDBC的基本步骤至关重要: 1. **加载数据库驱动**:在Java程序中,我们需要通过`Class....
JDBC使Java应用与关系型数据库的交互变得简单直观。当一个Java应用需要访问数据库时,需要完成以下步骤: 1. **打开连接**:建立与数据库的连接。 2. **发送SQL查询**:使用JDBC驱动向数据库发送SQL语句。 3. **...
5. **处理结果集**:`ResultSet`对象包含了查询的结果,你可以遍历它以获取数据并进行处理。 6. **关闭资源**:最后,记得关闭打开的资源,以防止内存泄漏和资源浪费: ```java conn.close(); ``` 在使用过程中...
下面是一个简单的使用SQLite JDBC在Android中执行查询的示例: ```java try { Class.forName("org.sqlite.JDBC"); Connection conn = DriverManager.getConnection("jdbc:sqlite:/data/data/your.package.name/...
供对这些行中数据的访问。每调用一次ResultSet的next()方法,游标就向结果集中的下一行移动。...这个示例展示了从加载驱动到处理结果的整个过程,包括异常处理和资源清理,是一个较为完整的JDBC使用示例。
2. **自动结果映射**:iBATIS可以自动将查询结果映射到Java对象,省去了手动处理结果集的步骤,提高了开发效率。 3. **事务管理**:iBATIS提供了简单的事务管理,可以方便地进行回滚和提交操作,简化了事务控制。 ...
Hibernate 是一个对象关系映射(ORM)框架,而 JDBC(Java Database Connectivity)是 Java 语言中用于与数据库交互的标准 API。两者的本质区别主要体现在以下几个方面: 1. **编程模型**: - **JDBC**:使用 ...
以下是一个简单的JDBC连接Access数据库的步骤: 1. **加载驱动**:通过`Class.forName()`方法加载JDBC驱动。例如: ```java Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ``` 2. **创建数据库连接**:使用`...
此方法返回一个`ResultSet`对象,其中包含了查询的结果。 ```java ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2"); ``` 2. **executeUpdate**:用于执行`INSERT`、`UPDATE`或`DELETE`语句...
2. Spring JDBC:Spring JDBC模块是Spring框架的一部分,它提供了一个更高级的抽象层来处理JDBC,使得开发者无需直接与JDBC API打交道,减少了错误和冗余代码。Spring JDBC提供了事务管理、异常转换等功能,简化了...
这个库提供了简单且线程安全的方法来处理数据库连接、执行SQL查询和更新,并处理结果集。它作为Apache Commons项目的一部分,是Java开发者常用的一个工具,能够减少编写重复的JDBC模板代码。 标题提到的"commons-...
以下是一个简单的示例: ```java import java.sql.*; public class PageDemo { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/dbname"; String user = "username"; ...
这里给出了一个连接字符串示例 `String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=access\\test.mdb";`,其中指定了数据库驱动、路径等信息。 - 注意:实际开发中应避免硬编码数据库连接...
总结来说,`jsp通用分页`的核心是利用JDBC的滚动结果集和数据库的分页特性,结合适当的接口设计,实现一个跨数据库的分页机制。这既要求对JDBC和数据库有深入理解,也需要考虑代码的灵活性和性能优化。
// 处理结果集 ``` 缺点是这种方法依赖于系统环境,可能在某些环境中不适用。 2. **jxl.jar** jxl.jar 是一个开源库,可以在所有支持 Java 虚拟机的操作系统上使用,无需依赖其他第三方库。它提供了直接操作 ...
本教程将详细介绍如何在JSP中实现一个简单的分页界面,以帮助初学者掌握这一关键技能。 首先,我们要理解分页的基本概念。分页通常涉及到两个主要部分:前端展示和后端逻辑。前端负责展示分页链接和当前页的信息,...
连接SQL数据库的基本步骤包括加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句和处理结果集。 ```java // 加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // ...