MyBatis调用存储过程

本文记录了在项目中使用MyBatis调用存储过程的详细步骤,包括数据库中存储过程的定义,JAVA代码如何组织参数,以及mapper.xml的配置。重点在于Map参数的使用,存储过程执行后,出参将自动写入Map中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*MyBatis调用存储过程*
今天在项目中用到需要调用存储过程,很多人以前没写过。所以在此把调用详细过程记录。
1.数据库中有一个create or replace package body pkg_public_int 其中pkg_public_int为数据库的包。其中包含有一个存储过程procedure get_data
(
p_int_id in varchar2,
p_input_filter in varchar2,
o_cursor_rst out type_ref_cur,
o_rst_rows out integer
)
过程由2个入参数,2个出参组成。
2.JAVA代码组织参数。Map<String, Object> param = new HashMap<String, Object>();
String filter = “1111";
param.put("p_int_id", "BMAP_GET_BMAP_INFO");
param.put("p_input_filter", filter);
param.put("o_cursor_rst", OracleTypes.CURSOR);
param.put("o_rst_rows", OracleTypes.INTEGER);
myUserMapper.queryMapList(param);
List<Model> list = (List<Model>) param.get("o_cursor_rst")

这里参数的传递是用Map格式。 执行存储过程之后,会自动将返回的参数写入param中对应的出参中。
3.mapper.xml配置

  //游标返回的结果对应的实体
  <resultMap id="resultMap" type="com.mybatis.entities.Model">

    <result column="VALUE_FZ" jdbcType="VARCHAR" property="valueFz" />
    <result column="VALUE_FM" jdbcType="VARCHAR" property="valueFm" />
    <result column="VALUE_LV" jdbcType="VARCHAR" property="valueLv" />
  </resultMap>
  //传递的参数map property对应的是JAVA代码param中的key
  <parameterMap id="paramMap" type="java.util.HashMap">  
    <parameter property="p_int_id" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>  
    <parameter property="p_input_filter" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>  
    <parameter property="o_cursor_rst" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="tclMap"/>  
    <parameter property="o_rst_rows" mode="OUT" jdbcType="INTEGER" javaType="java.lang.Integer"/>  
</parameterMap>  

    //调用存储过程。 parameterMap对应上面定义的参数map。
    <select id="queryMapList" statementType="CALLABLE" parameterMap="paramMap"  resultType="java.util.Map">
     <![CDATA[
     {call pkg_public_int.get_data(?,?,?,?)}  
     ]]>  
     </select>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值