zoukankan      html  css  js  c++  java
  • 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接收这个结果集(无需游标)。


    參考文章:http://yhjhappy234.blog.163.com/blog/static/316328322012455714892/



  • 相关阅读:
    android启动模式2
    acvitity的日常 启动模式(上)
    Fragment 切换问题
    异常处理
    Xutils的使用 转载 带自己细细研究
    hibernate 增删改
    OGNL
    JDBC
    Struts 文件的上传与下载
    ActionContext和ServletActionContext小结
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7400874.html
Copyright © 2011-2022 走看看