spring jdbctemplate调用存储过程,返回list对象
注:本文来源于《 spring jdbctemplate调用存储过程,返回list对象 》
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;
}
自己编写的代码
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.CallableStatementCallback;
import org.springframework.jdbc.core.JdbcTemplate; import com.tt.pwp.framework.data.dao.DaoFactory; import oracle.jdbc.OracleTypes; public class FuncReportTaskService {
protected final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired
private DaoFactory daoFactory; /**
* 调用存储过程
* @param spName
*/
@SuppressWarnings("unchecked")
public List<HashMap<String, Object>> executeSP(String procedure) {
JdbcTemplate jdbcTemplate = daoFactory.getDao().getJdbcTemplate();
//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;
}
}); }
}
spring jdbctemplate调用存储过程,返回list对象的更多相关文章
- Spring JdbcTemplate 调用存储过程
遇到调用存储过程的业务,以前有用过,但不是用Spring的 JdbcTemplate去做的,这次是在一个已经有的SpringMVC框架的项目下写处理存储过程的. 参考网络中的方法,在实际操作中遇到两个 ...
- Spring如何使用JdbcTemplate调用存储过程的三种情况
注:原文 <Spring如何使用JdbcTemplate调用存储过程的三种情况 > Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,下面列出使用Jdbc ...
- jdbcTemplate 调用存储过程。 入参 array 返回 cursor
注:本文来源< jdbcTemplate 调用存储过程. 入参 array 返回 cursor > 需求: java传入一个list object.从数据库找到相关的数据并返回. ...
- myabatis oracle 调用存储过程返回list结果集
Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...
- PostgreSQL 调用存储过程返回结果集
创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...
- Spring JDBC调用存储过程
以下示例将演示spring jdbc如何调用存储过程.将通过调用存储过程来读取Student表中的一个可用记录.将传递一个学生ID并获取学生记录信息. 语法: SimpleJdbcCall jdbcC ...
- spring jdbcTemplate 操作存储过程
Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,下面列出使用JdbcTemplate调用Oracle存储过程的三种情况: 一.无返回值的存储过程调用 1.存储过程代 ...
- 整理sqlserver 级联更新和删除 c#调用存储过程返回值
整理一下级联更新和删除 c#调用返回值 use master go IF exists(select 1 from sysdatabases where name='temp') BEGIN DROP ...
- mybatis 调用存储过程 返回游标 实例
存储过程示例: create or replace procedure Fsp_Plan_CheckPrj(v_grantno varchar2, v_deptcode number, v_curso ...
随机推荐
- Linux查看版本信息
查看Linux版本以及是32位还是64位 查看版本 一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@S-CentOS home]# cat /proc ...
- 【SRM-07 D】天才麻将少女KPM
Description 天才麻将少女KPM立志要在日麻界闯出一番名堂.KPM上周叒打了n场麻将,但她这次又没控分,而且因为是全市参与的麻将大赛,所以她的名次范围是0..10^5.名次可能等于0是因为K ...
- 20155324 《Java程序设计》实验一 Java开发环境的熟悉(Windws + IDEA)实验报告
20155324 <Java程序设计>实验一 Java开发环境的熟悉(Windws + IDEA)实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA 编辑. ...
- “无法找到XXX.exe的调试信息,或调试信息不匹配”解决方案
错误信息如下: 解决方法: 选择项目属性,依次序进行如下操作. 1.选择 配置属性->链接器->调试->生成调试信息 改为 是 一般问题都是出现在这个地方,修改完了可以尝试运行,若还 ...
- “<textarea>”内的文字对齐
转载:https://blog.csdn.net/henryzhang2009/article/details/9283803 转: textarea会把开始标签到结束标签里的内容全部原样显示,包括空 ...
- lua 语言笔记
Lua语言基础汇总(1) -- 类型与值 基础介绍 Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8种基本类型,分别是: nil(空)类型 bool ...
- redis集群学习
转载: http://arganzheng.life/redis-cluster.html Redis3.0版本加入了cluster功能,解决了Redis单点无法横向扩展的问题. 分布式系统要解决的不 ...
- springboot-菜鸟学习1
一.SpringBoot 快速开始 进入 https://start.spring.io/ 给项目命名 引入所需要的jar包支持 一般需要 jpa.freemarker.mysql.web等 在IDE ...
- day 11 - 1 装饰器
装饰器 装饰器形成的过程:最简单的装饰器——有返回值的——有一个参数——万能参数装饰器的作用:不想修改函数的调用方式 但是还想在原来的函数前后添加功能原则:开放封闭原则语法糖:@装饰器函数名装饰器的固 ...
- Sprng4之JDBC--很原始的使用方法
\[www.dev1234.com]一头扎进Spring4视频教程\一头扎进Spring4源码\[www.java1234.com]<一头扎进Spring4>第九讲 源码\Spring40 ...