为了方便我们经常需要函数/过程返回结果集时采用返回cursor的方式得到结果集,在ibatis以前版本中支持的不是很好,
现在最新版本已经可以支持的很好了.
一.下载最新ibatis包.
二.最新的连接oracle 10g的驱动ojdbc(我这里用的是oracle 10g)
三.下载最新的common包.
示例如下:
函数定义:
CREATE OR REPLACE FUNCTION GetCurTest(
param1 in varchar2;
param2 in varchar2;
)return SYS_REFCURSOR
IS
outCursor SYS_REFCURSOR; --输出的游标
BEGIN
open outCursor for
select ORGANCODE from testTable where col1 = GetCurTest.param1 and col2 = GetCurTest.param2;
return outCursor;
END; 注意这里用的是SYS_REFCURSOR,在oracle10g里面提供的.
ibatis中调用如下:
<typeAlias alias="corp" type="com.wes.model.Corp" />
<resultMap id="corp-map" class="corp">
<result property="corpNo" column="ORGANCODE" />
</resultMap>
<parameterMap id="test" class="java.util.HashMap" >
<parameter property="result" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="corp-map" />
<parameter property="param1" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="param2" jdbcType="Date" javaType="java.util.Date" mode="IN"/>
</parameterMap>
<procedure id="testCur" parameterMap="test">
{? = call GetCurTest(?, ?)}
</procedure>java中调用如下:
String resource = "SqlMapConfig.xml";
SqlMapClient client = null;
try...{
Reader reader = Resources.getResourceAsReader(resource);
client = SqlMapClientBuilder.buildSqlMapClient(reader);
}catch (Throwable e)...{}
Map p = new HashMap();
p.put("param1","a");
p.put("param2","b");
client.queryForObject(mapid, p);
List list = (List) p.get("result");
if (list == null || list.size() == 0)
list = new ArrayList();
return list;
list存放的就是我们要的结果集.
ibatis 调用存储过程 ibatis 调用存储过程
4.Procedure
procedure 元素支持存储过程。大部分存储过程要一些类似IN, INOUT 或者 OUT 的参数。所以,创建一个 <parameterMap> 元素并列出你要向存储过程传递的参数。只有当参数类型为OUT或者INOUT时parameterMap 对象才会被改变。
<parameterMap id="swapParameters" class="map" >
<parameter property="contactId" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
<parameter property="firstName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="lastName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
</parameterMap>
<procedure id="swapContactName" parameterMap="swapParameters" >
{call swap_contact_name (?, ?,?)}
</procedure>
你的代码一开始就要创建一个你要传递给存储过程的参数的 HashMap ,然后把它和你要执行的查询的名称一同传递给 sqlMap 。
HashMap paramMap = new HashMap();
paramMap.put("contactId", new Integer(1));
paramMap.put("firstName", "Sunil");
paramMap.put("lastName", "Patil");
sqlMap.queryForObject("swapCustomerName", paramMap);
--------------------------------------------------------------------------------------------------
5.Calling an Oracle procedure function using Ibatis
The ibatis documentation provides a sample on how to call a procedure, but how do you call a function in Oracle? The code sample shows it.
<parameterMap id="getSomeFunction" class="java.util.Map" >
<parameter property="question1" jdbcType="INTEGER" javaType="java.lang.String" mode="OUT"/>
<parameter property="question2" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="question3" jdbcType="INTEGER" javaType="java.lang.String" mode="IN"/>
<parameter property="question54" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="question5" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
</parameterMap>
<procedure id="getSomeFunction" parameterMap="getSomeFunction">
{? = call FNC_EXECUTE_SOME_FUNCTION(?, ?, ?, ?)}
分享到:
相关推荐
ibatis调用oracle存储过程分页
在Ibatis中调用Oracle函数和存储过程,你需要以下步骤: 1. **配置映射文件(Mapper XML)**: - 创建一个XML映射文件,定义SQL语句。对于函数,使用`<select>`标签;对于存储过程,使用`<procedure>`标签。 - 在...
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用...通过上述步骤,我们可以成功地使用ibatis调用Oracle存储过程,并处理返回的多个结果集。这不仅简化了数据库操作,还提高了代码的可读性和可维护性。
在iBatis中,当存储过程返回一个游标时,你可以将其映射为一个Java List。为此,你需要在Java方法中声明一个List类型的参数,而在SQL映射文件中,使用`<resultMap>`定义一个结果集映射,然后在`<selectResult>`标签...
### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...
在Java开发中,使用iBATIS(现在称为MyBatis)作为持久层框架时,调用数据库的存储过程是一种常见的需求。本文将详细介绍如何使用iBATIS调用存储过程,并提供一个简单的示例来说明其过程。 首先,我们需要在数据库...
ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...
iBatis调用存储过程
其中,`id`是方法名,`parameterType`表示没有输入参数,`resultType`则是返回结果的类型,这里我们假设存储过程返回的是一个Map。 2. **带参数的存储过程** 对于带参数的存储过程,我们需要在`<select>`标签内...
根据提供的文件信息,标题为“ibatis调用存储过程”,主要关注的是如何使用ibatis框架来调用数据库中的存储过程。下面将详细解释ibatis框架的基本概念、存储过程的概念以及如何在ibatis中配置和执行存储过程。 ### ...
### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以接受输入参数,执行一系列操作,并返回一个或多个输出结果。当需要频繁执行复杂的数据库操作时,使用...
3. **存储过程调用**:Ibatis可以通过`<select>`、`<procedure>`元素调用Oracle的存储过程,增强业务逻辑的封装性。 4. **连接池管理**:Ibatis可以与各种连接池(如C3P0、Druid、HikariCP等)集成,提高数据库连接...
5. **调用Ibatis接口**:在Java代码中,通过SqlSession对象调用SQL映射文件中的方法执行数据库操作。例如: ```java SqlSession session = sqlSessionFactory.openSession(); User user = session.selectOne(...
ibatis 读取oracle clob类型
### Ibatis调用存储过程详解 #### 一、引言 在实际的软件开发过程中,存储过程因其执行效率高及数据库级别的安全性等优点被广泛应用于各种业务场景之中。而对于使用Ibatis作为持久层框架的应用来说,如何有效地...
在实践中,你可以期待找到如何创建Oracle数据库表的SQL脚本,如何配置Ibatis以连接Oracle,如何编写和执行SQL语句,以及如何在Java代码中调用这些操作的示例。 总的来说,这个资源将帮助学习者理解以下几个关键知识...
本项目整合了Spring MVC、iBatis和Oracle数据库,这三个组件都是企业级应用开发中的重要工具。接下来,我们将深入探讨这三个技术以及它们如何协同工作。 **Spring MVC框架** Spring MVC是Spring框架的一部分,是一...
Spring、iBatis和Oracle的结合提供了强大的数据处理能力。本文将深入探讨这些技术如何协同工作,实现高效的分页缓存策略。 首先,Spring是一个开源的Java框架,它为开发人员提供了依赖注入(DI)和面向切面编程...