`
tudoufu
  • 浏览: 4388 次
  • 性别: Icon_minigender_2
  • 来自: 福洲
最近访客 更多访客>>
社区版块
存档分类
最新评论

myBatise调用存储过程

阅读更多

如何使用Mybaits调用数据库中的存储过程,下面以Oracle数据库的为例:

 

1.在数据库中创建以下的存储过程:

 

java代码:
  1. create or replace procedure pro_hello(p_user_name in varchar2,p_result out varchar2) is   
  2. begin   
  3.   p_result := 'hello,' || p_user_name;   
  4. end;  
create or replace procedure pro_hello(p_user_name in varchar2,p_result out varchar2) is
begin
  p_result := 'hello,' || p_user_name;
end;


 

2.编写SQL映射文件mapper.xml:

 

java代码:
  1. <select id="proHello" statementType="CALLABLE">   
  2. <![CDATA[   
  3.     {call pro_hello (#{p_user_name,mode=IN,jdbcType=VARCHAR},#{result,mode=OUT,jdbcType=VARCHAR})}   
  4. ]]>   
  5. </select>  
<select id="proHello" statementType="CALLABLE">
<![CDATA[
    {call pro_hello (#{p_user_name,mode=IN,jdbcType=VARCHAR},#{result,mode=OUT,jdbcType=VARCHAR})}
]]>
</select>


 

3.编写JAVA代码调用存储过程

 

java代码:
  1. public class ProcedureTest {   
  2.            
  3.          public static void main(String[] args) throws IOException {   
  4.             String resource = "mybatis.cfg.xml";   
  5.             Reader reader = Resources.getResourceAsReader(resource);   
  6.             SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);   
  7.           
  8.             SqlSession session = ssf.openSession();   
  9.           
  10.            try {   
  11.                  Map<String, String> param = new HashMap<String, String>();   
  12.                  param.put("p_user_name""zhangsan");   
  13.                  String returnValue = (String) session.selectOne("User.proHello", param);   
  14.                  System.out.println("message=" + param.get("p_user_name"));   
  15.                  System.out.println("result=" + param.get("result"));   
  16.                  System.out.println("returnValue=" + returnValue);   
  17.     
  18.            } catch (Exception e) {   
  19.                 e.printStackTrace();   
  20.            } finally {   
  21.               session.close();   
  22.           }   
  23.        }   
  24. }  
public class ProcedureTest {
        
         public static void main(String[] args) throws IOException {
            String resource = "mybatis.cfg.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
       
            SqlSession session = ssf.openSession();
       
           try {
                 Map<String, String> param = new HashMap<String, String>();
                 param.put("p_user_name", "zhangsan");
                 String returnValue = (String) session.selectOne("User.proHello", param);
                 System.out.println("message=" + param.get("p_user_name"));
                 System.out.println("result=" + param.get("result"));
                 System.out.println("returnValue=" + returnValue);
 
           } catch (Exception e) {
                e.printStackTrace();
           } finally {
              session.close();
          }
       }
}


 

4.执行Java代码,控制台输出结果如下:

 

java代码:
  1. 2012-03-07 20:36:32,406 DEBUG [java.sql.PreparedStatement] -==>  Executing: {call pro_hello(?,?)}   
  2. 2012-03-07 20:36:32,406 DEBUG [java.sql.PreparedStatement] -==> Parameters: zhangsan(String)   
  3. message=zhangsan  

 

 

===============

有返回值时:

<!-- call procedure parameter -->
    <parameterMap id="parameterMap" type="java.util.HashMap">
     <parameter property="result" jdbcType="CURSOR" javaType="java.sql.ResultSet" mode="OUT" />
        <parameter property="TesterCode" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
        <parameter property="Pwd" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
    </parameterMap>
    
 <select id="getTesterByCodeAndPwd"  parameterMap="parameterMap" statementType="CALLABLE" resultMap="userResultMap">
        {? = call pkg_gettesterbycodeandpwd.proc_gettesterbycodeandpwd(?, ?)}
    </select>
</mapper>

 

 本文转载自linux安全网,代返回值自己后加的。

分享到:
评论

相关推荐

    pb调用存储过程

    以下是关于Pb调用存储过程以及存储过程创建的详细知识: 首先,`Pb调用存储过程`通常是通过Database窗口或者DataWindow对象来实现的。在Pb中,我们可以通过以下步骤调用存储过程: 1. **声明存储过程**:在Pb的...

    hibernate调用存储过程

    hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程

    C#调用oracle方法(包括调用存储过程)

    ### C#调用Oracle方法(包括调用存储过程) 在.NET框架中,使用C#语言进行数据库操作是一项常见的任务。本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。...

    Java调用存储过程--传入集合参数

    ### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...

    C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    sqlhelper调用存储过程.rar

    本文将深入探讨如何使用SqlHelper调用存储过程,包括存储过程的基础概念、SqlHelper的基本用法以及具体步骤,以帮助开发者更高效地进行数据库操作。 一、存储过程基础 存储过程是预编译的SQL语句集合,存储在数据库...

    java调用存储过程实例

    在IT领域,特别是数据库操作与Java编程的交集部分,调用存储过程是常见的需求之一。根据提供的文件信息,我们可以深入解析如何在Java中通过JDBC(Java Database Connectivity)调用Oracle数据库的存储过程。 ### ...

    java调用存储过程小结.pdf

    Java 调用存储过程小结 Java 调用存储过程是指在 Java 程序中调用数据库中的存储过程,以便实现复杂的业务逻辑和数据处理。存储过程是指保存在数据库并在数据库端执行的程序,可以使用特殊的语法在 Java 类中调用...

    VB6.0 调用存储过程的例子(方法一)

    ### VB6.0调用存储过程的例子(方法一) 在Visual Basic 6.0中,调用数据库中的存储过程是一项非常实用的功能。本篇将详细解释一个具体的示例,通过VB6.0来调用一个名为`ADOTestRPE`的存储过程,并测试其返回值、...

    oracle触发器调用存储过程

    "Oracle触发器调用存储过程" Oracle触发器可以调用存储过程,以实现业务逻辑的自动化执行。然而,在触发器中调用存储过程时,需要注意事务的隔离性,以避免出现锁定和死锁的问题。Oracle自治事务(Autonomous ...

    mybatis调用储存过程

    在调用存储过程时,我们需要利用MyBatis提供的API和配置机制来实现。 1. **配置MyBatis**:在`mybatis-config.xml`配置文件中,你需要添加数据库连接信息,例如数据源、驱动类等。同时,也需要将你的Mapper接口文件...

    ADO-调用存储过程

    在C++环境下,使用ADO(ActiveX Data Objects)技术调用存储过程是一种常见的数据库编程操作。存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。存储过程可以通过参数接收输入值,并可返回输出...

    delphi调用Oracle的存储过程

    - 如果连接成功,则通过`ADOStoredProc1`组件调用存储过程`pkg_test.get`。 - 创建输入参数`p1`,并为其赋值1。 - 最后,执行存储过程。 通过以上步骤,我们可以在Delphi中成功调用Oracle的存储过程,并获取其...

    JDBC调用存储过程

    本文将详细讲解如何使用JDBC来调用存储过程,以实现数据的增删改查操作。 首先,理解存储过程是数据库中的一个重要概念。存储过程是一组预先编译好的SQL语句集合,它可以包含控制流语句、输入/输出参数,甚至可以有...

    java调用存储过程同时返回值和多个table

    java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集

    hibernate query调用oracle存储过程

    在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...

    调用存储过程(java)

    下面将详细介绍在Java中如何调用存储过程,并探讨其相关的知识点。 1. **存储过程的概念**: 存储过程是一种数据库对象,由一系列的SQL语句和控制结构组成。它们在数据库服务器上预先编译,当需要执行时,只需调用...

    jsp调用存储过程大集合

    本篇将详细介绍`jsp`调用存储过程的相关知识点,并提供丰富的案例资源。 一、JSP调用存储过程的基本原理 `jsp`是一种基于Java的动态网页技术,可以嵌入Java代码,处理服务器端的逻辑。存储过程是预编译的SQL语句...

    JAVA&C#调用存储过程代码

    以下是一个基本的调用存储过程的步骤: 1. 导入所需的JDBC库,如`java.sql.*`。 2. 创建数据库连接,使用`DriverManager.getConnection()`方法。 3. 准备Statement或CallableStatement对象。对于存储过程,我们通常...

Global site tag (gtag.js) - Google Analytics