问题描述
oracle定义数组:CREATEORREPLACETYPEvoucher_distribute_listastableofvoucher_distribute;CREATEORREPLACETYPEvoucher_distributeASOBJECT(nameVARCHAR2(100),codeVARCHAR2(10));用ibatis3如何调用存储过程定义了in输入参数的voucher_distribute_list非常感谢
解决方案
解决方案二:
该回复于2011-01-26 10:37:01被版主删除
解决方案三:
持久层实现类:publicStringdealPay(HashMapmap){this.getSqlMapClientTemplate().queryForObject("CM_BILL.dealpay",map);returnmap.get("rslt_str").toString();}sqlMap.xml文件:<parameterMapclass="java.util.Map"id="p-dealpay"><parameterjavaType="java.lang.String"jdbcType="VARCHAR"mode="OUT"property="rslt_str"/><parameterjavaType="java.lang.String"jdbcType="VARCHAR"mode="IN"property="begin_date_i"/><parameterjavaType="java.lang.String"jdbcType="VARCHAR"mode="IN"property="end_date_i"/><parameterjavaType="java.lang.String"jdbcType="VARCHAR"mode="IN"property="branch_i"/><parameterjavaType="java.lang.String"jdbcType="VARCHAR"mode="IN"property="customer_type_i"/></parameterMap><procedureid="dealpay"parameterMap="p-dealpay">{callF_rep_get_billmonth(?,?,?,?)}</procedure>这些已经足够可以让你知道怎么调用存储过程了。其他的你在发挥发挥!
解决方案四:
不是简单调用存储过程,是这个存储过程有个in参数的数组
解决方案五:
packageorg.yhb.ibatis.model;importjava.io.Serializable;importjava.util.Date;publicclassUserimplementsSerializable{privatestaticfinallongserialVersionUID=-6919964218508186044L;privateintid;privateStringname;privateDatebirthday;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicDategetBirthday(){returnbirthday;}publicvoidsetBirthday(Datebirthday){this.birthday=birthday;}}
<!DOCTYPEmapperPUBLIC"-//ibatis.apache.org//DTDiBatisMapper3.0//EN""http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><mappernamespace="org.yhb.ibatis.dao.UserDAO"><!--表结构createtableIBATIS_USER(IDNUMBERnotnull,NAMEVARCHAR2(20)notnull,BRITHDAYDATEnotnull)--><!--存储过程createorreplaceproceduregetAllUser(userListoutsys_refcursor)asbeginopenuserListforselect*fromibatis_user;end;--><!--resultMap--><resultMaptype="User"id="userMap"><idcolumn="id"property="id"/><resultcolumn="name"property="name"/><resultcolumn="birthday"property="birthday"/></resultMap><!--调用存储过程--><selectid="getAllUser"statementType="CALLABLE">{callgetAllUser(#{userList,<!--参数-->mode=OUT,<!--参数类型-->javajavaType=java.sql.ResultSet,<!--参数java类型-->jdbcType=CURSOR,<!--参数jdbc类型-->resultMap=userMap<!--ResultSet需要resultMap参数-->})}</select></mapper>
@TestpublicvoidtestProcedure()throwsException{Readerreader=null;reader=Resources.getResourceAsReader("configuration.xml");SqlSessionFactoryssf=newSqlSessionFactoryBuilder().build(reader);reader.close();SqlSessionsession=ssf.openSession();Mapmap=newHashMap();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();}
希望对你有帮助
解决方案六:
你这个是out参数的,还不符合要求,但也非常感谢了