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