mybatis springmvc调用oracle存储过程,返回记录集

参考:

http://bbs.csdn.net/topics/390866155

辅助参考:

http://www.2cto.com/kf/201307/226848.html

http://blog.csdn.net/grhlove123/article/details/7549290

在smm中,这样的controller编写方式是不一样的;

存储过程:

create or replace procedure pro_getchart(chart_cur out sys_refcursor) is

begin

  open chart_cur for
    select * from dic_chart;

end pro_getchart;

MapperXML:

    <select id="getChartByPro" statementType="CALLABLE" parameterType="map" >
     <![CDATA[
         call pro_getchart(
        #{chart_cur,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=com.stono.dao.server.chart.DicChartMapper.BaseResultMap}
        )
    ]]>
    </select>

DAO Interface:

package com.stono.dao.server.chart;

import java.util.List;
import java.util.Map;

import com.stono.model.server.chart.DicChart;

public interface DicChartMapper {

    List<DicChart> getChartByPro(Map<String, Object> map);
}

service :

......

@Service("DicChartService")
public class DicChartServiceImpl implements DicChartServiceI {

    @Autowired
    DicChartMapper dicChartMapper;

    @SuppressWarnings("unchecked")
    @Override
    public List<DicChart> getChartByPro() {
        Map<String, Object> map = new HashMap<String, Object>();
        dicChartMapper.getChartByPro(map);
        return (List<DicChart>) map.get("chart_cur");
    }

}

Controller:

......

@Controller
@RequestMapping("/DicChart")
public class DicChartController {

    @Autowired
    DicChartServiceI chartServiceI;

    @RequestMapping(value = "/getChartByPro")
    @ResponseBody
    List<DicChart> getChartByPro() {
        return chartServiceI.getChartByPro();
    }
}

就是在调用Mapper的时候使用map参数,调用结束之后再用get方法得到对象;

时间: 2024-10-05 09:39:01

mybatis springmvc调用oracle存储过程,返回记录集的相关文章

JFinal调用Oracle存储过程返回结果集

表结构 存储过程 CREATE OR REPLACE PROCEDURE TEST3(TID IN INTEGER,O OUT SYS_REFCURSOR) AS BEGIN IF(TID>0) THEN OPEN O FOR SELECT * FROM XHSCK.T_ADMINISTRATIVE_LEVEL T WHERE T.ADMINISTRATIVE_LEVEL_ID = TID; ELSE OPEN O FOR SELECT * FROM XHSCK.T_ADMINISTRATIVE

oracle 存储过程返回结果集

好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题. 本文只讨论使用存储过程返回结果集. 具体实现如下: -- 启用服务器输出---------------------set serveroutput

mybatis调用mysql存储过程返回结果集

存储过程中经常需要返回结果集. Mysql 中直接用 select 即可返回结果集.而 oracle 则需要使用游标来返回结果集.这一点 Mysql 相对比较方便,如下代码即可实现输出结果集: 存储过程定义: DELIMITER $$ DROP procedure IF EXISTS pro_sql_data1 $$ CREATE procedure pro_sql_data1(in sear_name varchar(2000)) BEGIN if sear_name is not null

oracle存储过程返回结果集

http://www.2cto.com/database/201204/127180.html oracle实现存储过程返回查询结果集合的方法 --实现存储过程返回查询结果集合的方法 ,以下代码来自网络整理 http://topic.csdn.net/u/20090721/12/ba403739-3212-4016-83ec-2a7062f21081.html Java代码 --第一种方法 create or replace Package SYSBasic as  www.2cto.com t

[转].net 调用oracle存储过程返回多个记录集

CREATE OR REPLACE PROCEDURE p_query_cs ( p_infotype IN VARCHAR2, p_fromareacode IN VARCHAR2, p_toareacode IN VARCHAR2, p_keytype IN NUMBER, r_cursor1 OUT sys_refcursor, --结果集 r_cursor2 OUT sys_refcursor --结果集 ) IS BEGIN OPEN r_cursor1 FOR SELECT * FR

C#中使用Oracle存储过程返回结果集

问题: 在MSSQLServer中定义的存储过程可以直接返回一个数据集,如: create procedure sp_getAllEmployees as SELECT * FROM [NORTHWND].[dbo].[Employees] 在Oracle数据库中这样定义是错误的,怎么解决? 办法: Oracle中可以使用游标(Cursor)对数据集进行操作,但在存储过程输出参数中直接使用Cursor错误,此时的Cursor应该是一个定义游标的关键字并非类型,所以先要定义一个包,在包中声明全局的

python 调用mysql存储过程返回结果集

存储过程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = imid and user = iuser; end; | delimiter ; python调用: import mysql.connector cnx = mysql.connector.connect( user='test',p

Oracle 存储过程 返回结果集

CREATE OR REPLACE PACKAGE PKG_CUST_RISK IS -- AUTHOR : ADMINISTRATOR -- CREATED : 2014/4/22 10:00:27 -- PURPOSE : 客户风险 VI_ERRORCODE M_LOG.ERRORCODE%TYPE DEFAULT 0; --数值型 异常代码 VS_ERRORTEXT M_LOG.ERRORTEXT%TYPE DEFAULT NULL; --字符型 异常描述 VS_OWNER M_LOG.O

存储过程不返回记录集导致ADO程序出错

HRESULT _hr = get_adoEOF(&_result); IsEOF()函数如下:其中ADOCG::_RecordsetPtr m_pRecordset; BOOL IsEOF()       {return m_pRecordset->adoEOF == VARIANT_TRUE;}; m_pRecordset->adoEOF 将执行下面的函数(见msado15.tli) 1    inline VARIANT_BOOL Recordset15::GetadoEOF (