`

mybatis 调用存储过程包含输入输出参数多结果集

 
阅读更多

本文转载自: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 
	}
}

 

分享到:
评论

相关推荐

    mybatis调用存储过程

    在数据库管理中,存储过程是一种预编译的SQL语句集合...总之,MyBatis调用存储过程提供了一种灵活且高效的方式,使得Java应用能充分利用数据库的高级功能。通过正确配置和使用,开发者可以实现更高效、安全的数据操作。

    MyBatis调用存储过程

    MyBatis作为一款流行的Java持久层框架,提供了调用存储过程的功能。下面将详细介绍如何在MyBatis中配置和使用存储过程。 ### 1. 配置MyBatis XML映射文件 在MyBatis的映射文件(mapper.xml)中,我们需要为存储...

    mybatis调用存储过程源码

    这个提供的"mybatis调用存储过程源码"压缩包,包含了一个完整的MyBatis调用存储过程的示例,解压后可以直接运行,帮助开发者理解如何在实际项目中实现这一功能。详细注释可以帮助初学者更好地理解和学习这一过程。...

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

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    spring mybatis 调用oracle存储过程

    本文将深入探讨如何在Spring和MyBatis集成环境中调用Oracle数据库的存储过程,包括无返回值、返回结果集以及返回多个结果的情况。 首先,让我们理解基础概念。Spring是一个全面的后端开发框架,它提供了依赖注入、...

    spring mvc + mybatis 调用mysql 存储过程

    存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。它们提高了性能,减少了网络传输,并提供了更好的安全性。 在Spring MVC中,控制器(Controller)通常用于接收...

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

    - 存储过程:是一组预先编译的SQL语句,可以包含输入、输出参数,能够执行复杂的数据库操作。 - 函数:与存储过程类似,但函数必须有返回值,可以作为表达式的一部分在SQL查询中使用。 2. **MyBatis框架简介** -...

    mybatis调用mysql存储过程

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

    mybatis调用储存过程

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

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

    例如,你可以创建一个名为`countDevicesName`的存储过程,接收设备名称作为输入参数,返回设备总数作为输出结果。 创建存储过程的语法如下: ```sql CREATE PROCEDURE sp_name([IN|OUT|INOUT] 参数名 数据类型) ...

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

    在调用存储过程时,我们需要传入输入参数 `billNumber`,并将输出参数 `exMessage`、`baseSet` 和 `trackSet` 通过 `ParameterMap` 对象返回。 五、结果处理 在调用存储过程后,我们可以通过 `ParameterMap` 对象来...

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

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

    mybatis调用存储过程的实例代码

    MyBatis调用存储过程的实例代码 MyBatis是一个基于Java的持久层框架,提供了对数据库的访问和操作。存储过程是一种编译好的SQL语句,能够实现复杂的业务逻辑。下面是一个关于MyBatis调用存储过程的实例代码,通过这...

    ibatIS调用存储过程

    相关class文件可能包含了ibatIS的Mapper接口定义、存储过程的输入输出参数类、Service或DAO实现类等。这些类文件与上述步骤密切相关,它们定义了存储过程的调用方式、参数传递和结果处理。 总结,ibatIS调用存储...

    调用存储过程入参出参为自定义对象_支持批量

    它可以包含一系列复杂的SQL语句,并接受输入参数,返回输出结果。存储过程可以提高性能,简化复杂的数据库操作,并提供更安全的数据访问方式。 #### 参数类型 在存储过程中,通常有两种类型的参数:入参(IN)和出...

    Springboot调用Oracle存储过程的几种方式.docx

    `createStoredProcedureQuery()`方法允许我们直接创建一个用于调用存储过程的对象,然后设置输入/输出参数。例如: ```java public QueryResponse queryBill1(String pay_ID) throws Exception { QueryResponse...

    ibatis调用存储过程

    通过以上步骤,你可以在iBATIS中方便地调用存储过程,无论是无参数还是带参数的,都能轻松应对。记得在实际应用中,根据你的数据库和业务需求进行相应的调整。希望这个示例能帮助你更好地理解iBATIS调用存储过程的...

    ibatis调用存储过程介绍

    在Java开发中,使用iBATIS...3. 在Java代码中,通过`SqlSession`调用存储过程,使用`Map`对象存储输入和输出参数。 通过这种方式,开发者可以在Java应用中方便地利用数据库的存储过程功能,实现更复杂的业务逻辑处理。

    IbatisNet调用存储过程

    IbatisNet支持存储过程的复杂逻辑,包括输出参数、返回值和多结果集。你可以通过调整映射文件中的`parameter`和`resultMap`来适应不同的存储过程结构。 5. **性能优化**: 调用存储过程可以提高性能,尤其是在...

Global site tag (gtag.js) - Google Analytics