如何使用Mybaits调用数据库中的存储过程,下面以Oracle数据库的为例:
1.在数据库中创建以下的存储过程:
java代码:
- create or replace procedure pro_hello(p_user_name in varchar2,p_result out varchar2) is
- begin
-
p_result := 'hello,' || p_user_name;
- 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代码:
- <select id="proHello" statementType="CALLABLE">
- <![CDATA[
- {call pro_hello (#{p_user_name,mode=IN,jdbcType=VARCHAR},#{result,mode=OUT,jdbcType=VARCHAR})}
- ]]>
- </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代码:
- 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();
- }
- }
- }
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代码:
- 2012-03-07 20:36:32,406 DEBUG [java.sql.PreparedStatement] -==> Executing: {call pro_hello(?,?)}
-
2012-03-07 20:36:32,406 DEBUG [java.sql.PreparedStatement] -==> Parameters: zhangsan(String)
- 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调用存储过程`通常是通过Database窗口或者DataWindow对象来实现的。在Pb中,我们可以通过以下步骤调用存储过程: 1. **声明存储过程**:在Pb的...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
3. **准备CallableStatement**:对于调用存储过程,我们需要使用`CallableStatement`对象,它是`PreparedStatement`的子类,专门用于调用数据库存储过程。通过`Connection`对象的`prepareCall()`方法创建。 4. **...
金蝶K3插件开发调用存储过程
hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程
### C#调用Oracle方法(包括调用存储过程) 在.NET框架中,使用C#语言进行数据库操作是一项常见的任务。本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。...
本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
本文将深入探讨如何使用SqlHelper调用存储过程,包括存储过程的基础概念、SqlHelper的基本用法以及具体步骤,以帮助开发者更高效地进行数据库操作。 一、存储过程基础 存储过程是预编译的SQL语句集合,存储在数据库...
5. **报表取值与正常报表设置一样**:报表的其他设置(如表格、图表等)与普通报表无异,主要的区别在于数据来源是调用存储过程。 6. **Tomcat中的数据源设置**:在Tomcat服务器的配置文件(通常为`context.xml`)...
### VB6.0调用存储过程的例子(方法一) 在Visual Basic 6.0中,调用数据库中的存储过程是一项非常实用的功能。本篇将详细解释一个具体的示例,通过VB6.0来调用一个名为`ADOTestRPE`的存储过程,并测试其返回值、...
在调用存储过程时,我们需要利用MyBatis提供的API和配置机制来实现。 1. **配置MyBatis**:在`mybatis-config.xml`配置文件中,你需要添加数据库连接信息,例如数据源、驱动类等。同时,也需要将你的Mapper接口文件...
在C++环境下,使用ADO(ActiveX Data Objects)技术调用存储过程是一种常见的数据库编程操作。存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。存储过程可以通过参数接收输入值,并可返回输出...
- 如果连接成功,则通过`ADOStoredProc1`组件调用存储过程`pkg_test.get`。 - 创建输入参数`p1`,并为其赋值1。 - 最后,执行存储过程。 通过以上步骤,我们可以在Delphi中成功调用Oracle的存储过程,并获取其...
在Delphi中调用SQL存储过程并获取结果是数据库编程中的一个重要环节。下面将通过给定的代码示例,详细解析Delphi如何调用SQL存储过程,并获取执行结果。 ### Delphi调用SQL存储过程的基本步骤 #### 1. 准备工作 ...
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...
下面将详细介绍在Java中如何调用存储过程,并探讨其相关的知识点。 1. **存储过程的概念**: 存储过程是一种数据库对象,由一系列的SQL语句和控制结构组成。它们在数据库服务器上预先编译,当需要执行时,只需调用...