ibatis调用oracle存储过程(极简版) 桃扇骨 2021-09-27 03:54 291阅读 0赞 版本: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的话也是可行的。具体代码基本一样,就不写了。
还没有评论,来说两句吧...