Welcome 微信登录

首页 / 数据库 / MySQL / MyBatis调用MySQL存储过程返回结果集

存储过程中经常需要返回结果集。 MySQL 中直接用 select 即可返回结果集。而 Oracle 则需要使用游标来返回结果集。这一点 MySQL 相对比较方便,如下代码即可实现输出结果集:存储过程定义:DELIMITER $$
DROP procedure IF EXISTS pro_sql_data1 $$ 
CREATE procedure pro_sql_data1(in sear_name  varchar(2000)) 
BEGIN 
 if sear_name is not null and sear_name!="" then
  select id,name,date_format(create_time,"%Y-%m-%d") as repDate from ad_place where
  name like concat("%",sear_name,"%");
 ELSE
  select id,name,date_format(create_time,"%Y-%m-%d") as repDate from ad_place;
 end if;
 
END$$
DELIMITER;执行结果:在mybatis中调用存储过程,然后获取该结果集:1、xml配置文件<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ifeng.iis.bean.iis.Report" >
 <resultMap type="java.util.HashMap" id="resultMap">
     <result column="id" property="id" javaType="java.lang.Integer" jdbcType="INTEGER"/>
     <result column="name" property="name" javaType="java.lang.String" jdbcType="VARCHAR"/>
     <result column="repDate" property="repDate" javaType="java.lang.String" jdbcType="VARCHAR"/>
     <result column="summ" property="summ" javaType="java.lang.Long" jdbcType="BIGINT"/>
    </resultMap>
   
 <select id="test123" parameterType="java.util.Map"  resultMap="resultMap" statementType="CALLABLE" > 
      {call pro_sql_data(
     #{obj,jdbcType=VARCHAR,mode=IN}
    )
      }
    </select> 
</mapper>Java代码public String query(String param) throws Exception {
  logger.info(param);
  Map queryMap = new HashMap();
  queryMap.put("obj", param);
  //List<Map> listIis1 = reportDao.select4MapParam(queryMap, "currentSql");
 
  List<Map> listIis2 =reportDao.select4MapParam(queryMap,"test123");
 
  return JSONArray.fromObject(listIis2).toString();
 }注:有上面可知,mysql存储过程中可以直接使用select语句返回结果集,而且mybatis可以直接使用list接收这个结果集(无需游标)。MyBatis入门学习教程  http://www.linuxidc.com/Linux/2015-02/113771.htmJava实战应用:Mybatis实现单表的增删改 http://www.linuxidc.com/Linux/2014-06/103456.htm[Java][Mybatis]物理分页实现 http://www.linuxidc.com/Linux/2014-04/99889.htmMybatis快速入门教程 http://www.linuxidc.com/Linux/2013-06/85762.htmMybatis的关于批量数据操作的测试 http://www.linuxidc.com/Linux/2012-05/60863.htmMybatis中对List<Object> 对象List的批处理插入操作 http://www.linuxidc.com/Linux/2014-02/96916.htmMyBatis 的详细介绍:请点这里
MyBatis 的下载地址:请点这里本文永久更新链接地址