版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/athur666/article/details/81392374
将调用存储过程参数放入map中,由于返回的游标中包含很多参数,所以再写一个resultmap与之对应,类型为hashmap。设置返回的jdbcType=CURSOR,resultMap设置为id对应的值。最后游标中的值就输出到list中了。代码如下:
service层
public HashMap getStackInfoByProcedure(String emp_id, String stk_code, String market) {
HashMap map = new HashMap();
ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
map.put("emp_id", emp_id);
map.put("stk_code", stk_code);
map.put("i_market", market);
map.put("i_login_source", 1);
map.put("o_return_code", null);
map.put("o_return_msg", 1);
map.put("rt_cursor", list);
this.optionalStockDao.getStackInfoByProcedure(map);
return map;
}
dao层
@Mapper
public interface OptionalStockDao {
void getStackInfoByProcedure(@Param("map") HashMap map);
}
mapper
<?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.cms.demo.dao.test1db.OptionalStockDao">
<resultMap type="java.util.HashMap" id="cursorMap">
<result column="praise_num" property="PRAISE_NUM" />
<result column="message_num" property="MESSAGE_NUM" />
<result column="focus_num" property="FOCUS_NUM"/>
<result column="foot_num" property="FOOT_NUM"/>
<result column="focus" property="FOCUS"/>
<result column="praise" property="PRAISE"/>
<result column="sec_id" property="SEC_ID"/>
<result column="foot" property="FOOT"/>
<result column="sec_code" property="SEC_CODE"/>
</resultMap>
<!--调用存储过程 -->
<select id="getStackInfoByProcedure" parameterType="map" statementType="CALLABLE" >
call runcrm.p_act_stk_info(
#{map.emp_id,mode=IN,jdbcType=INTEGER},
#{map.stk_code,mode=IN,jdbcType=VARCHAR},
#{map.i_market,mode=IN,jdbcType=VARCHAR},
#{map.i_login_source,mode=IN,jdbcType=VARCHAR},
#{map.o_return_code, mode=OUT,jdbcType=INTEGER},
#{map.o_return_msg, mode=OUT,jdbcType=VARCHAR},
#{map.rt_cursor,mode=OUT,jdbcType=CURSOR,resultMap=cursorMap}
)
</select>
</mapper>