ibatis调用oracle存储过程(极简版)

版本:ibatis-2.3.4.726.jar。(与其他版本及mybatis用法基本一致)

###创建存储过程

create or replace procedure nayi_test_pro_0703(in_obj1 in number,out_obj out number, in_obj2 in number)  is
begin
  out_obj := 10000 + in_obj1 + in_obj2;
end nayi_test_pro_0703;

就是传两个参数,做加法运算后返回。

###xml语句

<sqlMap namespace="blog">
    <parameterMap class="java.util.Map" id="para">
    	<parameter property="in_obj1" jdbcType="NUMERIC" javaType="java.lang.Double" mode="IN" />
      	<parameter property="out_obj" jdbcType="NUMERIC" javaType="java.lang.Double" mode="OUT" />
      	<parameter property="in_obj22" jdbcType="NUMERIC" javaType="java.lang.Double" mode="IN" />
    </parameterMap>

    <procedure id="testPro" parameterMap="para">
      <![CDATA[
        {call nayi_test_pro_0703(?, ?, ?)}
      ]]>
    </procedure>
</sqlMap>

注意!

  • parameterMap中的parameter会按照顺序传递到存储过程中。property只 与java中调用时的bean的属性对应。
  • mode貌似没什么用。就算把in写成out,它照样能跑。
  • jdbcType 一般都支持:Array, BigInt, Binary, Bit, Blob, Boolean, Char, Clob, Datalink, Date, Decimal, Double, Float, Integer, LongVarBinary, LongVarChar, Numeric, Real, Ref, SmallInt, Struct, Time, Timestamp, TinyInt, VarBinary, VarChar.(大小写不敏感)。

###java代码

	public static void main(String[] args) throws SQLException, IOException {
		// TODO Auto-generated method stub
		Map bean = new HashMap();
		
		bean.put("in_obj1", 4444.4);
		bean.put("in_obj22", 3333.3);
		
		Map map = (Map) SqlMapClientBuilder.buildSqlMapClient(Resources.getResourceAsReader("config/SqlMapConfig.xml"))
				.queryForObject("blog.testPro", bean);
		
		System.out.println(map);
		System.out.println(bean);
		
	}

输出结果

2018-07-13 16:36:04,534 [java.sql.Connection]-[DEBUG] {conn-100000} Connection
2018-07-13 16:36:04,537 [java.sql.Connection]-[DEBUG] {conn-100000} Preparing Call: {call nayi_test_pro_0703(?, ?, ?)}
2018-07-13 16:36:04,727 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Executing Statement: {call nayi_test_pro_0703(?, ?, ?)}
2018-07-13 16:36:04,728 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Parameters: [4444.4, 3333.3]
2018-07-13 16:36:04,728 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Types: [java.lang.Double, java.lang.Double]
null
{out_obj=17777.7, in_obj1=4444.4, in_obj22=3333.3}

可以看到,返回值是null。返回的参数被添加到了传入的参数中。key为xml中所配置的。

为了简化代码,上面的例子用的是Map传的参数。用bean的话也是可行的。具体代码基本一样,就不写了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值