本文转载自:http://blog.csdn.net/ge_zhiqiang/article/details/38065629
一、首先定义存储过程,数据库环境mysql
CREATE PROCEDURE queryTotalNum(OUT totalNum INT , IN tableName varchar(40), IN conditions varchar(300)) begin declare stmt varchar(2000); declare num int; if LENGTH(conditions)>1 then begin set @sqlstr=concat('SELECT COUNT(*) INTO @num from ',tableName,' where ',conditions); end; else begin set @sqlstr=concat('SELECT COUNT(*) INTO @num from ',tableName); end; end if; prepare stmt from @sqlstr; execute stmt; deallocate prepare stmt; set totalNum = @num; select * from hdx_order_info LIMIT 0, 10 ; select * from hdx_proxy_distributor LIMIT 0, 10 ; end;
二、配置mybatis文件
<!--Map作为存储过程输入输出参数 --> <select id="getNamesAndItems" statementType="CALLABLE" parameterType="Map" resultMap="HdxOrderInfoMap,TestMap"> {call queryTotalNum(#{totalNum,jdbcType=INTEGER,mode=OUT},#{tableName,jdbcType=INTEGER,mode=IN},#{conditions,jdbcType=INTEGER,mode=IN})} </select>
三、DAO类
public interface IHdxOrderInfoDao { public List<List<?>> getNamesAndItems(Map<String,Object> map); }
四、services接口
public interface IHdxOrderInfoService { public List<List<?>> getNamesAndItems(Map<String,Object> map); }
五、services实现
public class HdxOrderInfoServiceImpl implements IHdxOrderInfoService{ private IHdxOrderInfoDao hdxOrderInfoDao = null; public IHdxOrderInfoDao getHdxOrderInfoDao() { return hdxOrderInfoDao; } public void setHdxOrderInfoDao(IHdxOrderInfoDao hdxOrderInfoDao) { this.hdxOrderInfoDao = hdxOrderInfoDao; } public List<List<?>> getNamesAndItems(Map<String, Object> map) { List<List<?>> list = this.hdxOrderInfoDao.getNamesAndItems(map); //totalNum是存储过程中的输出参数 System.out.println(map.get("totalNum")); //List<HdxOrderInfo> list0 = (List<HdxOrderInfo>)list.get(0); //List<HdxProxyDistributor> list1 = (List<HdxProxyDistributor>)list.get(1); return list } }
相关推荐
在数据库管理中,存储过程是一种预编译的SQL语句集合...总之,MyBatis调用存储过程提供了一种灵活且高效的方式,使得Java应用能充分利用数据库的高级功能。通过正确配置和使用,开发者可以实现更高效、安全的数据操作。
MyBatis作为一款流行的Java持久层框架,提供了调用存储过程的功能。下面将详细介绍如何在MyBatis中配置和使用存储过程。 ### 1. 配置MyBatis XML映射文件 在MyBatis的映射文件(mapper.xml)中,我们需要为存储...
这个提供的"mybatis调用存储过程源码"压缩包,包含了一个完整的MyBatis调用存储过程的示例,解压后可以直接运行,帮助开发者理解如何在实际项目中实现这一功能。详细注释可以帮助初学者更好地理解和学习这一过程。...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
本文将深入探讨如何在Spring和MyBatis集成环境中调用Oracle数据库的存储过程,包括无返回值、返回结果集以及返回多个结果的情况。 首先,让我们理解基础概念。Spring是一个全面的后端开发框架,它提供了依赖注入、...
存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。它们提高了性能,减少了网络传输,并提供了更好的安全性。 在Spring MVC中,控制器(Controller)通常用于接收...
- 存储过程:是一组预先编译的SQL语句,可以包含输入、输出参数,能够执行复杂的数据库操作。 - 函数:与存储过程类似,但函数必须有返回值,可以作为表达式的一部分在SQL查询中使用。 2. **MyBatis框架简介** -...
- 对于返回多条结果的存储过程,可以使用`<resultMap>`来映射结果集。 - 调用带有游标(CURSOR)的存储过程时,需要使用`<cursor>`标签,并配合`<foreach>`处理结果。 - 参数模式有IN、OUT、INOUT三种,根据存储...
在调用存储过程时,我们需要利用MyBatis提供的API和配置机制来实现。 1. **配置MyBatis**:在`mybatis-config.xml`配置文件中,你需要添加数据库连接信息,例如数据源、驱动类等。同时,也需要将你的Mapper接口文件...
例如,你可以创建一个名为`countDevicesName`的存储过程,接收设备名称作为输入参数,返回设备总数作为输出结果。 创建存储过程的语法如下: ```sql CREATE PROCEDURE sp_name([IN|OUT|INOUT] 参数名 数据类型) ...
在调用存储过程时,我们需要传入输入参数 `billNumber`,并将输出参数 `exMessage`、`baseSet` 和 `trackSet` 通过 `ParameterMap` 对象返回。 五、结果处理 在调用存储过程后,我们可以通过 `ParameterMap` 对象来...
本篇主要介绍如何在MyBatis中调用MySQL的存储过程,包括如何接收返回参数、单个结果集以及多个结果集。 首先,我们创建了一个名为`demo`的表,用于存储测试数据。然后定义了一个存储过程`pro`,它接受一个输入参数`...
MyBatis调用存储过程的实例代码 MyBatis是一个基于Java的持久层框架,提供了对数据库的访问和操作。存储过程是一种编译好的SQL语句,能够实现复杂的业务逻辑。下面是一个关于MyBatis调用存储过程的实例代码,通过这...
相关class文件可能包含了ibatIS的Mapper接口定义、存储过程的输入输出参数类、Service或DAO实现类等。这些类文件与上述步骤密切相关,它们定义了存储过程的调用方式、参数传递和结果处理。 总结,ibatIS调用存储...
它可以包含一系列复杂的SQL语句,并接受输入参数,返回输出结果。存储过程可以提高性能,简化复杂的数据库操作,并提供更安全的数据访问方式。 #### 参数类型 在存储过程中,通常有两种类型的参数:入参(IN)和出...
`createStoredProcedureQuery()`方法允许我们直接创建一个用于调用存储过程的对象,然后设置输入/输出参数。例如: ```java public QueryResponse queryBill1(String pay_ID) throws Exception { QueryResponse...
通过以上步骤,你可以在iBATIS中方便地调用存储过程,无论是无参数还是带参数的,都能轻松应对。记得在实际应用中,根据你的数据库和业务需求进行相应的调整。希望这个示例能帮助你更好地理解iBATIS调用存储过程的...
在Java开发中,使用iBATIS...3. 在Java代码中,通过`SqlSession`调用存储过程,使用`Map`对象存储输入和输出参数。 通过这种方式,开发者可以在Java应用中方便地利用数据库的存储过程功能,实现更复杂的业务逻辑处理。
IbatisNet支持存储过程的复杂逻辑,包括输出参数、返回值和多结果集。你可以通过调整映射文件中的`parameter`和`resultMap`来适应不同的存储过程结构。 5. **性能优化**: 调用存储过程可以提高性能,尤其是在...