`

ibatis 调用存储过程(2)

阅读更多

http://blog.csdn.net/fy_kenny/archive/2008/04/30/2350586.aspx

 

全部是针对Microsoft SQL Server 2000的Stored Procedure的例子:
参照《iBATIS in Action》书写:
1.   max_in_example
Stored Procedure:
CREATE PROCEDURE [dbo].[max_in_example]
@a INTEGER = 0 OUTPUT,
@b INTEGER = 0 OUTPUT,
@c INTEGER = 0 OUTPUT
AS
 
BEGIN
       IF (@a > @b)
              SET @c = @a
       ELSE
              SET @c = @b
       RETURN @c
END
GO


 
SqlMap:
<parameterMap id="pm_in_example" class="java.util.Map">
       <parameter property="c" javaType="int" jdbcType="INTEGER"
           mode="OUT" />
       <parameter property="a" javaType="int" jdbcType="INTEGER" />
       <parameter property="b" javaType="int" jdbcType="INTEGER" />
 
 
    </parameterMap>
    <procedure id="in_example" parameterMap="pm_in_example"
       resultClass="int">
       { ? = call max_in_example(?, ?) }
    </procedure>


 
Java Code:
publicstatic Integer getMax_in_example(int a, int b) throws SQLException {
    Map<String, Integer> m = new HashMap<String, Integer>(2);
    m.put("a", new Integer(a));
    m.put("b", new Integer(b));
    m.put("c", new Integer(0));
    //执行存储过程in_example
    sqlMapper.queryForObject("in_example", m);
   
    return m.get("c");
}


 
2.   swap
Stored Procedure:
CREATE PROCEDURE [dbo].[swap]
@a INTEGER OUTPUT,
@b INTEGER OUTPUT
 
AS
 
BEGIN
       DECLARE @temp INTEGER
 
       SET @temp = @a
       SET @a = @b
       SET @b = @temp
END
GO


 
SqlMap:
    <parameterMap id="swapProcedureMap" class="java.util.Map">
       <parameter property="a" javaType="int" jdbcType="INTEGER"
           mode="INOUT" />
       <parameter property="b" javaType="int" jdbcType="INTEGER"
           mode="INOUT" />
    </parameterMap>
    <procedure id="swapProcedure" parameterMap="swapProcedureMap">
       { call swap(?, ?) }
    </procedure>


 
Java Code:
publicstatic Map swap(int a, int b) throws SQLException {
    Map<String, Integer> m = new HashMap<String, Integer>(2);
    m.put("a", new Integer(a));
    m.put("b", new Integer(b));
   
    //执行存储过程swap
    sqlMapper.queryForObject("swapProcedure", m);
   
    return m;
}


 
3.   maximum
Stored Procedure:
CREATE PROCEDURE [dbo].[maximum]
@a INT OUTPUT,
@b INT OUTPUT,
@c INT OUTPUT
 
AS
 
BEGIN
    IF(@a > @b)
         SET @c = @a
 
    IF(@b >= @a)
         SET @c = @b
END
GO


 
SqlMap:
<parameterMap id="maxOutProcedureMap" class="java.util.Map">
    <parameter property="a" mode="IN" />
    <parameter property="b" mode="IN" />
    <parameter property="c" jdbcType="INTEGER" mode="OUT" />
</parameterMap>
<procedure id="maxOutProcedure"parameterMap="maxOutProcedureMap">
       { call maximum (?, ?, ?) }
</procedure>


 
Java Code:
publicstatic Integer maximum(int a, int b) throws SQLException {
    Map<String, Integer> m = new HashMap<String, Integer>(2);
    m.put("a", new Integer(a));
    m.put("b", new Integer(b));
    m.put("c", new Integer(0));
   
    //执行存储过程maximum
    sqlMapper.queryForObject("maxOutProcedure", m);
           
    return m.get("c");
}


 
以上的Java Code类方法都是写在相应的ProcedureDAOImpl类中,可以通过ProcedureDAOImpl类调用相应得方法和传入对应参数来与数据库存储过程交互。
 
注意:在SqlMap.xml文件中<parameterMap>中参数的顺序跟<Procedure>中”?”的顺序一致。
如:a, b, c; ? = procedurename(?, ?) 则,第一个问号表示a,依次类推。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fy_kenny/archive/2008/04/30/2350586.aspx

分享到:
评论

相关推荐

    ibatIS调用存储过程

    ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...

    ibatis调用存储过程

    在Java开发中,iBATIS(现在被称为MyBatis)是一个流行的数据持久层框架,它允许开发者将SQL语句直接嵌入到Java代码中,从而简化数据库操作。...希望这个示例能帮助你更好地理解iBATIS调用存储过程的方法。

    ibatis调用存储过程介绍

    本文将详细介绍如何使用iBATIS调用存储过程,并提供一个简单的示例来说明其过程。 首先,我们需要在数据库中创建一个存储过程。以下是一个Oracle数据库中的存储过程示例: ```sql CREATE OR REPLACE PROCEDURE pp ...

    ibatis调用存储过程.txt

    根据提供的文件信息,标题为“ibatis调用存储过程”,主要关注的是如何使用ibatis框架来调用数据库中的存储过程。下面将详细解释ibatis框架的基本概念、存储过程的概念以及如何在ibatis中配置和执行存储过程。 ### ...

    iBatis调用存储过程

    iBatis调用存储过程

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    Ibatis调用存储过程调用存储过程

    ### Ibatis调用存储过程详解 #### 一、引言 在实际的软件开发过程中,存储过程因其执行效率高及数据库级别的安全性等优点被广泛应用于各种业务场景之中。而对于使用Ibatis作为持久层框架的应用来说,如何有效地...

    ibatis调用oracle存储过程

    最后,在Java代码中,通过ibatis的Session对象调用存储过程,传入必要的参数,处理返回的结果集。 ```java SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources....

    ibatis调存储过程返回游标

    本文将深入探讨如何使用iBatis调用存储过程并返回游标,这是一个在处理复杂数据库操作时常见的需求。 ### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以...

    Ibatis调用Oracle存储过程返回自定义类型

    #### 使用Ibatis调用存储过程 Ibatis是一个Java持久层框架,它能够简化Java应用程序与数据库之间的交互。为了调用上述存储过程并正确处理返回值,我们需要进行以下配置: ##### 日志配置(log4j.properties) ```...

    IBatis查删改查与调用存储过程 mysql数据库

    "IBatis查删改查与调用存储过程 mysql数据库" 这个标题揭示了本文将深入探讨如何使用IBatis框架在MySQL数据库中执行基本的CRUD(创建、读取、更新、删除)操作,以及如何调用存储过程。IBatis是一个轻量级的Java持久...

    ibatis调用oracle的函数,存储过程的方法

    调用存储过程: ```java Map, Object&gt; params = new HashMap(); params.put("id", id); sqlSession.execute("updateEmployeeStatus", params); String status = (String) params.get("status"); ``` 5. **...

    ibatis与存储过程(带输出参数的应用)

    在实际项目中,使用Ibatis调用存储过程时,还应注意以下几点: 1. 不同的数据库系统可能有不同的存储过程调用语法,如Oracle、MySQL、SQL Server等,需要根据具体数据库进行调整。 2. 存储过程中的输出参数在Java...

    ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标

    本篇文章将详细探讨如何在iBatis中调用Oracle的函数和存储过程,尤其是处理IN和OUT参数以及游标的场景。 首先,我们需要了解iBatis的基本工作原理。iBatis是一个SQL映射框架,它允许开发者将SQL语句写在XML配置文件...

    J2EE+Spring+Ibatis2+blazeds存储过程调用返回结果集

    在这个项目中,我们结合了Spring框架、Ibatis持久层框架以及Blazeds技术,来演示如何调用存储过程并处理返回的结果集。下面将详细讲解这些技术的运用。 首先,J2EE是一种广泛用于开发分布式企业应用的平台,它提供...

    ibatis官方中文文档

    学习这两份文档,开发者不仅可以理解iBATIS的基本工作原理,还能掌握如何高效地利用iBATIS调用存储过程,提高数据库操作的灵活性和性能。对于Java开发者,尤其是从事Web应用开发的人员,深入理解和熟练运用iBATIS是...

    ibatis增删查改,存储过程调用

    本篇文章将深入探讨如何在Ibatis中实现增、删、查、改(CRUD)操作,并调用存储过程,同时涉及相关的表结构设计。 首先,Ibatis通过XML配置文件或注解方式定义了SQL语句,允许我们编写动态SQL,以适应不同的查询...

    IBatis中的存储过程应用实例

    在IT行业中,数据库操作是不可或缺的一部分,而IBatis作为一款流行的数据映射框架,提供了一种灵活的方式来处理SQL语句,包括调用存储过程。存储过程是数据库中预编译的SQL语句集合,可以提高性能、增强安全性,并...

Global site tag (gtag.js) - Google Analytics