spring jdbctemplate调用存储过程,返回list对象
方法:
/**
* 调用存储过程
* @param spName
*/
@SuppressWarnings("unchecked")
public List<HashMap<String, Object>> executeSP(String procedure) {
//procedure = "{call WCITY2_STATISTIC.sp_uservisit_stat(?)}";
return (List<HashMap<String, Object>>) jdbcTemplate.execute(procedure,
new CallableStatementCallback() {
public Object doInCallableStatement(
CallableStatement cs) throws SQLException,
DataAccessException {
List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(1);
while (rs.next()) {
HashMap<String, Object> dataMap = new HashMap<String, Object>();
ResultSetMetaData rsMataData = rs.getMetaData();
for (int i = 1; i <= rsMataData.getColumnCount(); i++) {
dataMap.put(rsMataData.getColumnName(i), rs
.getString(rsMataData.getColumnName(i)));
}
list.add(dataMap);
}
return list;
}
});
}
存储过程:
create or replace package WCITY2_STATISTIC is
-- Author : ADMINISTRATOR
-- Created : 2012/10/24 9:48:34
-- Purpose :
type Ref_Cursor is ref cursor;
--
procedure sp_pager_stats;
--访问信息
procedure sp_uservisit_stat(c_uservisit out Ref_Cursor);
end WCITY2_STATISTIC;
create or replace package body WCITY2_STATISTIC is
--页面信息
procedure sp_pager_stats is
begin
-- cur_page as select * from OMS_WIRELESS. TEMPLATE_FILE_WORKING;
null;
end sp_pager_stats;
--访问信息
procedure sp_uservisit_stat(c_uservisit out Ref_Cursor) as
--定义游标
/*
cursor c_uservisit is
select t.city,t.username,t.username as telphone,'' as ip
from INTERFACE_WIRELESS.USER_LOGIN_LOG t ;*/
begin
open c_uservisit For
select t.city, t.username, t.username as telphone, '' as ip
from INTERFACE_WIRELESS.USER_LOGIN_LOG t;
end;
end WCITY2_STATISTIC;
调用方法:
@SuppressWarnings("rawtypes")
public String getUserVisitStat(){
//List lst=jdbcService.executeSP("");
String procedure = "{call WCITY2_STATISTIC.sp_uservisit_stat(?)}";
List lst=spService.executeSP(procedure);
if(lst!=null){
System.out.println(lst.size());
}
return SUCCESS;
}
分享到:
相关推荐
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
Spring的JdbcTemplate是Spring框架中用于简化数据库操作的工具类,它是基于JDBC但又抽象出了一层,避免了直接与数据库驱动API交互,从而提高了代码的可读性和可维护性。本文将深入探讨Spring JdbcTemplate的常用方法...
在Spring框架中,可以为每个DAO配置单独的`JdbcTemplate`实例,或者让DAO类继承`JdbcDaoSupport`类,这样可以通过调用`getJdbcTemplate()`方法来获取`JdbcTemplate`实例。书中提到的做法是为每个DAO添加一个`...
这里,`queryForObject()`方法用于返回单个对象,`UserRowMapper`是自定义的RowMapper,负责将查询结果映射为User对象。 3. 更新(Update) 更新数据时,我们使用`update()`方法执行SQL的UPDATE语句。比如更新用户...
在本文中,我们将深入探讨Spring框架中的一个核心组件——JdbcTemplate。JdbcTemplate是Spring提供的一种数据库操作工具,它简化了数据库访问,使开发者能够编写出更健壮、更易于维护的代码,避免了手动处理JDBC连接...
`JdbcTemplate`的核心功能包括:执行SQL查询、更新、调用存储过程等,同时提供了一套统一的异常处理机制。它通过模板方法模式设计,允许我们在不丢失灵活性的情况下,保持代码的整洁和可读性。 在Spring应用中,`...
此外,JdbcTemplate还提供了其他高级功能,如批量操作、分页查询、存储过程调用等。同时,它也支持PreparedStatement,可以防止SQL注入攻击。对于性能要求较高的互联网应用,JdbcTemplate的这些特性使其成为理想的...
在这个例子中,`YourResultEntity`是你定义的结果集映射实体类,用于将存储过程返回的结果转换为Java对象。 结合Spring和Hibernate,你可以在Spring的Service层使用Hibernate的Session来调用存储过程,或者在...
综上所述,Spring JdbcTemplate结合MySQL的分页查询封装涉及到的主要知识点有:Spring的JdbcTemplate用法、MySQL的分页查询(LIMIT和OFFSET)、结果集映射、分页结果对象的构建、以及代码封装与复用。通过这些技术,...
- **查询**:支持简单的 SQL 查询,预编译的参数化查询,以及存储过程的调用。 - **插入与更新**:提供了插入、更新和删除数据的方法,自动处理 SQL 更新操作返回的受影响行数。 - **事务管理**:通过 Spring 的事务...
博客中的讲解可能还包括了更多关于JDBCTemplate的高级用法,如批处理、存储过程调用、复杂查询等。在实际项目中,通过结合Spring JDBCTemplate,开发者可以编写出更加优雅、可维护的数据库访问代码,同时充分利用...
描述中提到的"一图详解(脑图)"意味着文档中可能包含了一个清晰的图示,这个图示将详细展示JdbcTemplate在Spring中的使用过程和相关组件的交互。这样的图示对于理解JdbcTemplate的工作原理以及如何在项目中实际应用它...
在Java的Spring框架中,`getBean`方法和`JdbcTemplate`是两个核心且重要的概念。它们分别代表了Spring对依赖注入(Dependency Injection,DI)的实现和数据库操作的简化处理。 首先,让我们来深入理解Spring的`...
JdbcTemplate是Spring框架提供的用于简化JDBC API操作的对象。它通过提供一个高级抽象层来减少编码工作量,并帮助开发者避免处理JDBC API中常见的陷阱,如资源管理、异常处理等。Spring框架为不同的数据访问技术提供...
无论是查询、插入还是调用存储过程,`jdbcTemplate`都能提供简洁且安全的API,使得数据库操作变得更加便捷。在实际开发中,结合自定义的映射器和回调处理器,我们可以构建出高效且灵活的数据库访问层。
在本文中,我们将深入探讨如何使用Spring Boot集成JdbcTemplate与MySQL数据库进行数据操作。Spring Boot以其简化配置和快速启动的特点,已经成为Java开发者的首选框架。而JdbcTemplate是Spring框架的一部分,它提供...
3. **调用存储过程**:通过jdbcTemplate对象调用存储过程并处理返回的结果集。 示例代码如下: ```java import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core....
接口定义了业务操作,实现类则通过JdbcTemplate调用对应的方法。例如: ```java public interface UserRepository { User findById(int id); List<User> findAll(); void save(User user); } public class ...
4. **SQL执行**:支持多种方式执行SQL,包括查询、更新、调用存储过程等。 5. **参数绑定**:通过占位符的方式安全地绑定参数,防止SQL注入。 6. **结果集处理**:提供了多种结果集转换方式,如List、Map、单个...