`
java_cd
  • 浏览: 59559 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ibatis中mysql存储过程返回结果集

阅读更多
mysql存储过程可以直接返回结果集,同时可以有out参数
例如:
存储过程:
 

view plaincopy to clipboardprint?
CREATE PROCEDURE `test`  
(IN _login VARCHAR(32),   
IN _psw VARCHAR(32),   
OUT _ret INTEGER(10),  
OUT _id INTEGER(10),   
OUT _name VARCHAR(32),   
OUT _email VARCHAR(32),   
OUT _phone VARCHAR(20),   
OUT _active INTEGER(11))     //同时返回多个结果集合  
 
BEGIN  
    DECLARE CONTINUE HANDLER FOR NOT FOUND set _ret =-1;  
    set _ret = 0 ;  
 
    select id,name,email,phone,active  
    into _id,_name,_email,_phone,_active  
    from test  
    where tx_account.`loginname`=_login and tx_account.`password`=MD5(_psw) and active=1;  
    ---------返回结果集-----  
    if _ret = 0 then  
       select a.id as id ,a.name as name,a.priority as priority  
       from test b left join test1 a on b.role=a.id  
       where b.account=_id;  
    end if;  
END;  
 
 
直接返回结果集  
ibatis文件  
<parameterMap id="testParameterMap" class="params">  
    <parameter property="loginname" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>  
    <parameter property="password" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>  
    <parameter property="ret" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>  
    <parameter property="id" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>      
    <parameter property="name" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>  
    <parameter property="phone" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>  
    <parameter property="email" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>  
    <parameter property="active" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>  
</parameterMap>  
 
<procedure id="test" parameterMap="testMap" resultMap="AccountRoleResultMap">  
    {call test(?,?,?,?,?,?,?,?)}  
</procedure>   
     
dao 的实现  
定义一个传参的map params ,  
 
   HashMap<String,Object> params = new HashMap<String,Object>();  
   //把需要的参数放到map中  
   params.put("id",account.getId());  
   params.put("ret",null);  
   params.put("loginname", null);  
   params.put("name", null);  
   params.put("email", null);  
   params.put("phone",null);  
   params.put("active", null);  
//定义一个list   
   List list=null;  
    list= (List)(getSqlMapClientTemplate().queryForList("test",params));  
   //上面这样操作就可以获得存储过程返回的结果集。   
    Object var;   
    var = params.get("ret"); //从map 中获得制定的输出参数的值。 



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yangzl0123/archive/2009/10/29/4743721.aspx
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics