ibatis调用存储过程如何实现?

TheDisguiser 2020-07-27 16:25:58 java常见问答 7917

在各种数据库框架中,ibatis算是其中不错的一种,小伙伴们知道使用ibatis调用存储过程该如何实现吗?下面听小编来讲解一下吧。

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;

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>

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);
}

以上就是本篇文章的所有内容,如果要了解更多有关java架构师的知识,就请来关注我们了解详情吧。

推荐阅读:

ibatis分页如何实现?代码实例

ibatis动态拼接sql怎么实现?

ibatis和mybatis的区别是什么?有什么不同?