ibatis调用存储过程的实现

时间:2022-05-08 15:46:44

一:单个返回值

1.1:存储过程包内实现

CREATE OR REPLACE PROCEDURE proc_test(v_domain_id in number,v_count out number)as
begin
select count(*) into v_count from bms_cost_bill t where t.domain_id = v_domain_id;

end;

1.2:ibatis配置实现

<sqlMap namespace="BMS">
--配置映射
<parameterMap id="proc_test" class="java.util.HashMap">
<parameter property="v_domain_id" javaType="java.lang.Long" jdbcType="INTEGER" mode="IN"/>
<parameter property="v_count" javaType="java.lang.Long" jdbcType="INTEGER" mode="OUT" />
</parameterMap>
--调用存储过程
<procedure id="proc_test" parameterMap="proc_test">
{call proc_test(?,?)}
</procedure>
</sqlMap>

1.3:java代码

public void test() {
--组装map集合
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("v_domain_id", 1);
params.put("v_count", 0);
--调用ibatis配置xml中的 procedureId
this.getSqlMapClientTemplate().queryForList("BMS.proc_test", params);
--获取返回值
int v_count = Integer.valueOf(params.get("v_count").toString());
System.out.println("v_count="+v_count);
}