在Mybatis调用Mysql的存储过程获取输出参数

mysql存储过程

create PROCEDURE p_getAreaList(in vfid int,out areas varchar(200))
BEGIN
SET @areas='ok';
SELECT * from mytable;//业务代码...
SET areas=@areas;//返回参数
END

接口DAO.java代码如下

    // 获取区域名称队列
    public List<HashMap<String, Object>> getAreaList(HashMap<String, Object> map);

使用List接收返回的数据集,用map传入参数,并自动带回出参值。

xml代码如下

	<!-- 查询区域名称列表 --> 	
	<select id="getAreaList" resultMap="userMap" parameterType="java.util.HashMap" statementType="CALLABLE">
		{call p_getAreaList(#{fid},#{areas,mode=OUT,jdbcType=VARCHAR})}					
	</select>	

注意:后面需要加上statementType参数,值为"CALLABLE"。call必须放在{ }里面(调用没有出参的存储过程时,可以省略{ },但带出参存储过程不可缺少),并且输出参数areas必须有mode=OUT修饰。否则无法获取到输出参数。

areas 是出参类型,执行完存储过程后,出参值会自动赋值给该值。还需要

Controller代码如下

			hmap.put("fid", fid);
			hmap.put("areas", "");
			userDao.getAreaList(hmap);
			logger.info(hmap.get("areas"));//获取返回的输出参数的值

使用map.get(“areas”)即可获取到出参值。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐