`
jianfulove
  • 浏览: 120049 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
社区版块
存档分类
最新评论

MyBatis调用存储过程,含有返回结果集、return参数和output参数 .

阅读更多

 

use base_passport
go
 
create proc yhj_test
    @input_a int,
    @input_b int,
    @output_c int out
as
begin
    select * from config.city;
    set @output_c = @input_a*@input_b;
    return @input_a+@input_b;
end

 

 

 

 

 

Mybats配置:

 

<resultMap type="java.util.HashMap" id="resultMap">
       <result column="city_key" property="cityKey"javaType="java.lang.Integer" jdbcType="INTEGER"/>
       <result column="province_key" property="provinceKey"javaType="java.lang.Integer" jdbcType="INTEGER"/>
             <result column="city_name" property="cityName"javaType="java.lang.String" jdbcType="VARCHAR"/>
</resultMap>
   
    <select id="testByProc" statementType="CALLABLE"parameterType="java.util.HashMap"           resultMap="resultMap">
       <![CDATA[
           {#{d,mode=OUT,jdbcType=INTEGER}=call dbo.yhj_test(
              #{a,mode=IN,jdbcType=INTEGER},
              #{b,mode=IN,jdbcType=INTEGER},
              #{c,mode=OUT,jdbcType=INTEGER}
           )}    
       ]]>
    </select>

 

 

 

Java代码:

Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("a", 2);
paramMap.put("b", 3);
List<City> citys =(List<City>) getTemplate().selectList(getNameSpaceAndMethod("testByProc"), paramMap);
return citys;

 

 

通过以上代码我们即可获取对应的结果集,return参数和output参数。其中return参数和output参数放在传入的paramMap中,运行结果如下:

 

c是存储过程的output参数,而d为return参数。

需要注意的事项:

1、  存储过程的参数和名称无关,只和顺序有关系

2、  存储过程的output参数,只能通过传入的map获取

3、  存储过程返回的结果集可直接用返回的map接收

4、  存储过程的return结果需要使用?=call procName(?,?)的第一个参数接收,需要指定对应的mode为OUT类型

5、  存储过程对应的数据类型为枚举类型,需要使用大写,如VARCHAR

 

分享到:
评论

相关推荐

    mybatis调用存储过程

    存储过程是数据库中预编译的程序,由一组SQL语句组成,可以接受参数、返回结果集、执行事务控制等。存储过程的主要优点包括:提高性能(因为预编译后减少了解析时间)、提高安全(可以通过权限控制访问)、降低网络...

    mybatis调用储存过程

    4. **处理结果**:如果存储过程有返回值,可以通过`resultType`指定返回结果的类型,MyBatis会自动将结果映射到指定类型。对于`OUT`参数,MyBatis会在执行完存储过程后自动填充。 5. **在Service层调用**:在业务...

    MyBatis调用存储过程

    如果存储过程返回结果集,我们需要在映射文件中定义`&lt;resultMap&gt;`,来描述如何将数据库结果映射到Java对象。每个`&lt;result&gt;`标签代表结果集中的一列,包括`column`(数据库列名)和`property`(Java对象属性名)。 `...

    mybatis调用存储过程源码

    - 有时存储过程返回多个结果集,这时需要在Mapper XML中使用`&lt;resultMap&gt;`标签来处理。 这个提供的"mybatis调用存储过程源码"压缩包,包含了一个完整的MyBatis调用存储过程的示例,解压后可以直接运行,帮助开发者...

    springboot整合mybatis调用oracle存储过程

    在IT行业中,Spring Boot和MyBatis是两个非常...在实际开发中,可以根据需求调整存储过程的逻辑和结果处理方式,以满足各种复杂业务场景。注意,对于大数据量的查询,使用游标可以有效地减少内存占用,提高系统性能。

    JAVA通过MyBatis调用MySql存储过程和函数doc文档合集整理.zip

    - 对于存储过程返回的结果集,可以通过`ResultMap`定义映射规则,或者使用`@Results`和`@Result`注解。 6. **事务管理** - 调用存储过程和函数可能涉及多条SQL语句,MyBatis的事务管理机制能确保操作的原子性。 ...

    spring mybatis 调用oracle存储过程

    如果存储过程返回一个结果集,我们可以使用游标(Cursor)来处理。在MyBatis中,可以声明一个方法,其返回类型为Map或自定义的Java Bean,代表存储过程的输出参数。在XML配置中,使用`&lt;select&gt;`标签并设置`...

    MyBatis调用MYSQL存储过程

    MyBatis调用MYSQL存储过程 返回多行 引用的包: asm-3.1.jar cglib-2.2.jar commons-logging-1.1.1.jar log4j-1.2.13.jar mybatis-3.0.4.jar mysql-connector-java-5.1.13.jar slf4j-api-1.5.8.jar slf4j-log4j12-...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...

    spring mvc + mybatis 调用mysql 存储过程

    尽管存储过程的调用不需要像普通SQL那样编写查询语句,但仍然需要在XML文件中配置,以便MyBatis知道如何绑定参数和返回值。 ```xml &lt;mapper namespace="com.example.mapper.EmployeeMapper"&gt; ...

    mybatis调用orclae存储过程

    当调用`insertEmployee`方法时,MyBatis会执行配置的存储过程,并将结果(如果有的话)返回。在上述例子中,因为`INSERT_EMPLOYEE`没有返回值,所以不需要处理返回结果。 总结,通过以上步骤,我们可以使用MyBatis...

    MyBatis下调用存储过程并返回复杂结果集.docx

    MyBatis 调用 Oracle 存储过程返回复杂结果集 MyBatis 是一种基于 Java 的持久层框架,提供了对数据库的交互操作。然而,在 MyBatis 的官方文档中,并没有对如何调用 Oracle 存储过程的介绍,导致了网络上的资料...

    mybatis调用mysql存储过程

    - 对于返回多条结果的存储过程,可以使用`&lt;resultMap&gt;`来映射结果集。 - 调用带有游标(CURSOR)的存储过程时,需要使用`&lt;cursor&gt;`标签,并配合`&lt;foreach&gt;`处理结果。 - 参数模式有IN、OUT、INOUT三种,根据存储...

    spring-boot+tk.mybatis通用mapper

    在IT行业中,Spring Boot是一个非常流行的Java框架,它简化了Spring应用的初始化和配置过程,使得开发者能够更快地构建可独立运行的Java应用。而tk.mybatis则是MyBatis的扩展,提供了一些增强功能,便于在Spring ...

    Mybatis调用Oracle存储过程的方法图文详解

    本文详细介绍了Mybatis调用Oracle存储过程的方法,包括无参数存储过程的调用,有参数存储过程的调用,和存储过程的结果集调用。这些方法可以帮助开发者更好地使用Mybatis和Oracle存储过程来实现复杂的业务逻辑操作。

    Mybatis调用MySQL存储过程的简单实现

    本文将详细介绍如何使用MyBatis调用MySQL存储过程,以及存储过程的相关概念、优缺点和基本语法。 首先,存储过程是数据库中预编译的一组SQL语句,它可以包含控制流语句,以实现更复杂的业务逻辑。存储过程的创建和...

    lanlan2017#JavaReadingNotes#10.3 MyBatis调用存储过程 10.3.3根据id查询数据返回对

    title: 10.3 MyBatis调用存储过程 10.3.3根据id查询数据返回对象10.3 MyBatis调用存储过程 10.3.3根据id查询数据返回对

    Mybatis传list参数调用oracle存储过程的解决方法

    "Mybatis调用Oracle存储过程传List参数解决方法" Mybatis是当前最流行的持久层框架之一,它提供了强大的数据访问和操作功能。但是,如何将List类型参数传递给Oracle存储过程,实现批量插入数据却是一个棘手的问题,...

    3、mybatis存储过程和函数的调用1

    本篇主要介绍如何在MyBatis中调用MySQL的存储过程,包括如何接收返回参数、单个结果集以及多个结果集。 首先,我们创建了一个名为`demo`的表,用于存储测试数据。然后定义了一个存储过程`pro`,它接受一个输入参数`...

Global site tag (gtag.js) - Google Analytics