oracle定义数组:
CREATE OR REPLACE TYPE voucher_distribute_list as table of voucher_distribute;CREATE OR REPLACE TYPE voucher_distribute AS OBJECT
(
  name          VARCHAR2(100),
  code        VARCHAR2(10)
);用ibatis3 如何调用存储过程定义了in输入参数的voucher_distribute_list
非常感谢

解决方案 »

  1.   

    持久层实现类:
    public String dealPay(HashMap map) {
      this.getSqlMapClientTemplate().queryForObject("CM_BILL.dealpay", map);
      return map.get("rslt_str").toString();
    }sqlMap.xml文件:
    <parameterMap class="java.util.Map" id="p-dealpay"><parameter javaType="java.lang.String" jdbcType="VARCHAR" mode="OUT" property="rslt_str" />
    <parameter javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" property="begin_date_i" />
    <parameter javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" property="end_date_i" />
    <parameter javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" property="branch_i" />
    <parameter javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" property="customer_type_i" />
    </parameterMap><procedure id="dealpay" parameterMap="p-dealpay">
    {call F_rep_get_billmonth(?,?,?,?)}
    </procedure>
    这些已经足够可以让你知道怎么调用存储过程了。其他的你在发挥发挥!
      

  2.   


    package org.yhb.ibatis.model;  
      
    import java.io.Serializable;  
    import java.util.Date;  
      
    public class User implements Serializable{  
        private static final long serialVersionUID = -6919964218508186044L;  
        private int id;  
        private String name;  
        private Date birthday;  
        public int getId() {  
            return id;  
        }  
        public void setId(int id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public Date getBirthday() {  
            return birthday;  
        }  
        public void setBirthday(Date birthday) {  
            this.birthday = birthday;  
        }  
    }  
    <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD iBatis Mapper 3.0 //EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">  
    <mapper namespace="org.yhb.ibatis.dao.UserDAO">  
        <!-- 表结构  
            create table IBATIS_USER  
            (  
              ID       NUMBER not null,  
              NAME     VARCHAR2(20) not null,  
              BRITHDAY DATE not null  
            )  
        -->  
          
        <!-- 存储过程  
            create or replace procedure getAllUser(userList out sys_refcursor)  
            as  
            begin  
               open userList for select * from ibatis_user;  
            end;  
         -->  
           
        <!-- resultMap -->  
        <resultMap type="User" id="userMap">  
            <id column="id" property="id" />  
            <result column="name" property="name" />  
            <result column="birthday" property="birthday" />  
        </resultMap>  
      
        <!-- 调用存储过程 -->  
        <select id="getAllUser" statementType="CALLABLE">  
            {call  
              getAllUser(#{userList,<!-- 参数 -->  
                           mode=OUT,<!-- 参数类型 -->  
                           javajavaType=java.sql.ResultSet,<!-- 参数java类型 -->  
                           jdbcType=CURSOR,<!-- 参数jdbc类型 -->  
                           resultMap=userMap<!-- ResultSet需要resultMap参数 -->  
                           })}  
        </select>  
    </mapper>  
    @Test  
    public void testProcedure() throws Exception {  
        Reader reader = null;  
        reader = Resources.getResourceAsReader("configuration.xml");  
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);  
        reader.close();  
          
        SqlSession session = ssf.openSession();  
        Map map = new HashMap();  
        session.selectOne("org.yhb.ibatis.dao.UserDAO.getAllUser", map);  
        System.out.println(map);  
        //返回的集合被放入了map中  
        List<User> userList = (List<User>) map.get("userList");  
        System.out.println(userList);  
        session.close();  
    }  希望对你有帮助
      

  3.   

    你这个是out参数的,还不符合要求,但也非常感谢了