ibetis调用存储过程

来源:互联网 发布:js observable 编辑:程序博客网 时间:2024/05/22 07:58

Java代码  

  1. create or replace procedure pp(x in number, y in number ,z out  number ) is   
  2.   begin   
  3.       select  x + y into z  from dual;   
  4. end pp;  

 create or replace procedure pp(x in number, yin number ,z out  number ) is

   begin

       select x + y into z  from dual;

 end pp;


很简单,存储过程名字叫pp,传入两个输入参数,然后z是输出参数,算两者之和。

二. 在映射文件中
   

Java代码  

  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2.  <!DOCTYPE mapper     
  3.   PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"    
  4.    "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">   
  5.    <mapper namespace="emp">   
  6.     <select id="selectByProc" statementType="CALLABLE">   
  7. {call pp(#{x},#{y},#{z,mode=OUT,jdbcType=INTEGER})}   
  8. /select>   
  9.   </mapper>   

     <?xml version="1.0"encoding="UTF-8" ?>

      <!DOCTYPE mapper 

       PUBLIC "-//ibatis.apache.org//DTDMapper 3.0//EN"

       "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

        <mappernamespace="emp">

         <select id="selectByProc"statementType="CALLABLE">

      {callpp(#{x},#{y},#{z,mode=OUT,jdbcType=INTEGER})}

  </select>

       </mapper>

  


   上面id随便取,statementType是关健,这里可以是"STATEMENT","PREPARED","CALLABLE"(调用存储过程) ,{call pp(#{x},#{y},#{z,mode=OUT,jdbcType=INTEGER})} 要用这种格式
   {call 存储过程名(输入参数列表,输出参数列表)}
  主要是这个mode=OUT为输出参数,试了好久。


三.调用
        

Java代码  

  1. SqlSession  session  =  .......   
  2.         Map map = new HashMap();   
  3.         map.put("x", 1);   
  4.         map.put("y", 2);   
  5.         map.put("z", 0);   
  6.         session.selectOne("emp.selectProc", map);   
  7.         System.out.println(map.get("z"));  

 

原创粉丝点击