mybatis调用存储过程,获取返回的游标

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>

猜你喜欢

转载自blog.csdn.net/athur666/article/details/81392374