DAO.java接口内容如下:

public interface PagDAO {
    //查询存储过程,返回多个输出参数
	public void pagApply(HashMap<String, String> map);

    //查询数据集(存储过程游标返回一条或多条)
	public List<HashMap<String, String>> pagApplySelect(HashMap<String, Object> map);

}

mapper.xml内容如下:

	<resultMap type="java.util.HashMap" id="cursorMap">
		<result column="RecNo" property="RecNo"/>
		<result column="ProjName" property="ProjName"/>
		<result column="ContactName" property="ContactName"/>
		<result column="CONTACTTEL" property="CONTACTTEL"/>
		<result column="CONTACTADDR" property="CONTACTADDR"/>
		<result column="BANKNAME" property="BANKNAME"/>
		<result column="BANKACCOUNT" property="BANKACCOUNT"/>
		<result column="PROJTYPE" property="PROJTYPE"/>
		<result column="ORGANIZE" property="ORGANIZE"/>
		<result column="RSCALE" property="RSCALE"/>
		<result column="RSTATUS" property="RSTATUS"/>
		<result column="WXID" property="WXID"/>
		<result column="bz" property="bz"/>
	</resultMap>
<!-- 查询返回游标,获取数据集 -->
  	<select id="pagApplySelect" parameterType="java.util.HashMap" 
  	statementType="CALLABLE" resultMap="cursorMap">
	{call UECCP.PKG_YC_WECHAT.P_WX_PAGAPPLYSEC(#{RecNo,mode=IN,jdbcType=VARCHAR},
	#{WXid,mode=IN,jdbcType=VARCHAR},#{RTN_DATE,mode=OUT,jdbcType=CURSOR,resultMap=cursorMap},
	#{RTN_CODE,mode=OUT,jdbcType=VARCHAR},#{RTN_MSG,mode=OUT,jdbcType=VARCHAR})}		
	</select>	
	<!-- 执行存储过程,返回输出参数 -->
	<update id="pagApply" parameterType="java.util.HashMap" statementType="CALLABLE" >
	{call UECCP.PKG_YC_WECHAT.P_WX_PAGAPPLY(#{ctype,mode=IN},
	#{RecNo,mode=IN},#{ProjName,mode=IN},#{ContactName,mode=IN},
	#{ContactTel,mode=IN},#{ContactAddr,mode=IN},#{BankName,mode=IN},
	#{BankAccount,mode=IN},#{ProjType,mode=IN},#{Organize,mode=IN},
	#{RScale,mode=IN},#{WXid,mode=IN},#{BZ,mode=IN},#{UUID,mode=IN},
	#{resultCode,mode=OUT,jdbcType=VARCHAR},#{resultMsg,mode=OUT,jdbcType=VARCHAR})}		
	</update>

调用存储过程,都用parameterType="java.util.HashMap"来做入参,statementType="CALLABLE",表示存储过程。

在调用返回游标,获取数据集时,使用jdbcType=CURSOR,resultMap=cursorMap,这里的cursorMap是上文有定义的resultMap类型。前端调用时,需要转换成list类型来接收,如下文。

			HashMap<String, Object> hmap = new HashMap<String, Object>();
			hmap.put("RecNo", map.get("RecNo"));
			hmap.put("WXid", map.get("WXid"));
			hmap.put("RTN_DATE", new ArrayList<HashMap<String, Object>>());
			pagDAO.pagApplySelect(hmap);
			ArrayList<HashMap<String, Object>> list = (ArrayList<HashMap<String, Object>>) hmap.get("RTN_DATE");

 

注意:调用的入参、出参必须按存储过程的入参、出参顺序,特别是出参。否则会提示参数个数或类型有误。

返回的出参值,会自动附加到入参的HashMap类型中,前端调用函数时可以使用map.get(“出参名”)来获取对应的出参值。

 

Logo

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

更多推荐