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
相关推荐
存储过程是数据库中预编译的程序,由一组SQL语句组成,可以接受参数、返回结果集、执行事务控制等。存储过程的主要优点包括:提高性能(因为预编译后减少了解析时间)、提高安全(可以通过权限控制访问)、降低网络...
4. **处理结果**:如果存储过程有返回值,可以通过`resultType`指定返回结果的类型,MyBatis会自动将结果映射到指定类型。对于`OUT`参数,MyBatis会在执行完存储过程后自动填充。 5. **在Service层调用**:在业务...
如果存储过程返回结果集,我们需要在映射文件中定义`<resultMap>`,来描述如何将数据库结果映射到Java对象。每个`<result>`标签代表结果集中的一列,包括`column`(数据库列名)和`property`(Java对象属性名)。 `...
- 有时存储过程返回多个结果集,这时需要在Mapper XML中使用`<resultMap>`标签来处理。 这个提供的"mybatis调用存储过程源码"压缩包,包含了一个完整的MyBatis调用存储过程的示例,解压后可以直接运行,帮助开发者...
在IT行业中,Spring Boot和MyBatis是两个非常...在实际开发中,可以根据需求调整存储过程的逻辑和结果处理方式,以满足各种复杂业务场景。注意,对于大数据量的查询,使用游标可以有效地减少内存占用,提高系统性能。
- 对于存储过程返回的结果集,可以通过`ResultMap`定义映射规则,或者使用`@Results`和`@Result`注解。 6. **事务管理** - 调用存储过程和函数可能涉及多条SQL语句,MyBatis的事务管理机制能确保操作的原子性。 ...
如果存储过程返回一个结果集,我们可以使用游标(Cursor)来处理。在MyBatis中,可以声明一个方法,其返回类型为Map或自定义的Java Bean,代表存储过程的输出参数。在XML配置中,使用`<select>`标签并设置`...
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-...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
尽管存储过程的调用不需要像普通SQL那样编写查询语句,但仍然需要在XML文件中配置,以便MyBatis知道如何绑定参数和返回值。 ```xml <mapper namespace="com.example.mapper.EmployeeMapper"> ...
当调用`insertEmployee`方法时,MyBatis会执行配置的存储过程,并将结果(如果有的话)返回。在上述例子中,因为`INSERT_EMPLOYEE`没有返回值,所以不需要处理返回结果。 总结,通过以上步骤,我们可以使用MyBatis...
MyBatis 调用 Oracle 存储过程返回复杂结果集 MyBatis 是一种基于 Java 的持久层框架,提供了对数据库的交互操作。然而,在 MyBatis 的官方文档中,并没有对如何调用 Oracle 存储过程的介绍,导致了网络上的资料...
- 对于返回多条结果的存储过程,可以使用`<resultMap>`来映射结果集。 - 调用带有游标(CURSOR)的存储过程时,需要使用`<cursor>`标签,并配合`<foreach>`处理结果。 - 参数模式有IN、OUT、INOUT三种,根据存储...
在IT行业中,Spring Boot是一个非常流行的Java框架,它简化了Spring应用的初始化和配置过程,使得开发者能够更快地构建可独立运行的Java应用。而tk.mybatis则是MyBatis的扩展,提供了一些增强功能,便于在Spring ...
本文详细介绍了Mybatis调用Oracle存储过程的方法,包括无参数存储过程的调用,有参数存储过程的调用,和存储过程的结果集调用。这些方法可以帮助开发者更好地使用Mybatis和Oracle存储过程来实现复杂的业务逻辑操作。
本文将详细介绍如何使用MyBatis调用MySQL存储过程,以及存储过程的相关概念、优缺点和基本语法。 首先,存储过程是数据库中预编译的一组SQL语句,它可以包含控制流语句,以实现更复杂的业务逻辑。存储过程的创建和...
"Mybatis调用Oracle存储过程传List参数解决方法" Mybatis是当前最流行的持久层框架之一,它提供了强大的数据访问和操作功能。但是,如何将List类型参数传递给Oracle存储过程,实现批量插入数据却是一个棘手的问题,...
title: 10.3 MyBatis调用存储过程 10.3.3根据id查询数据返回对象10.3 MyBatis调用存储过程 10.3.3根据id查询数据返回对
本篇主要介绍如何在MyBatis中调用MySQL的存储过程,包括如何接收返回参数、单个结果集以及多个结果集。 首先,我们创建了一个名为`demo`的表,用于存储测试数据。然后定义了一个存储过程`pro`,它接受一个输入参数`...