ibatis3.X如何调用Oracle存储过程定义的in数组

问题描述

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参数的,还不符合要求,但也非常感谢了

时间: 2024-11-03 00:08:05

ibatis3.X如何调用Oracle存储过程定义的in数组的相关文章

weblogic连接池-Java调用Oracle存储过程传入数组参数报错

问题描述 Java调用Oracle存储过程传入数组参数报错 weblogic连接池 JNDI提供的链接保存 Oracle数组 报错 oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 大家好,我在用weblogic连接池 JNDI

jsp中调用Bean,然后在Bean中调用oracle存储过程

新手在写程序时,一定要胆大心细,而且要有耐心,不妥协,不懂就翻书,网上查资料,问朋友,坚决进行到底. 最近一直凭着ASP的知识在摸索中前进,一跑坎坷,自不用说了.言归正传. 建立一个登录系统,要求达到以下目的. 1.用户通过Bean来认证以及得到得到用户信息. 2.记录用户登录信息,如用户登录次数,最后登录时间. 3.记录操作日志. 未解决及疑惑的问题: 1.用户登录后的Session是否可以通过Bean来判断. 2.通过Bean调用ORACLE存储过程,返回select后的记录集. 操作步骤:

大家一起分享C#调用oracle存储过程

oracle|存储过程 大家一起分享C#调用oracle存储过程 执行结果 ?????? ? ?????? ? ????? ? Oracle方面 1.创建Oracle过程存储 create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2)as? varparam varchar2(28);begin? varparam:=paramin;? p

jsp中调用Bean,然后在Bean中调用oracle存储过程。

js|oracle|存储过程 新手在写程序时,一定要胆大心细,而且要有耐心,不妥协,不懂就翻书,网上查资料,问朋友,坚决进行到底.      最近一直凭着ASP的知识在摸索中前进,一跑坎坷,自不用说了. 言归正传.      建立一个登录系统,要求达到以下目的.      1.用户通过Bean来认证以及得到得到用户信息.      2.记录用户登录信息,如用户登录次数,最后登录时间.      3.记录操作日志.     未解决及疑惑的问题:     1.用户登录后的Session是否可以通过B

ASP 调用 ORACLE存储过程并返回结果集

oracle|存储过程 ASP 调用 ORACLE存储过程并返回结果集 看过网上好多ASP调用ORACLE的方法,但是没有特好特直接的东西,所以总结各家的东西最后得出的一个自己需要的方法,感觉也比较大众所以特此发布 ###################################################oracle的存储过程################################################### --创建包头create or replace pack

jsp中调用Bean然后在Bean中调用oracle存储过程

新手在写程序时,一定要胆大心细,而且要有耐心,不妥协,不懂就翻书,网上查资料,问朋友,坚决进行到底. 最近一直凭着ASP的知识在摸索中前进,一跑坎坷,自不用说了.言归正传. 建立一个登录系统,要求达到以下目的. 1.用户通过Bean来认证以及得到得到用户信息. 2.记录用户登录信息,如用户登录次数,最后登录时间. 3.记录操作日志. 未解决及疑惑的问题: 1.用户登录后的Session是否可以通过Bean来判断. 2.通过Bean调用ORACLE存储过程,返回select后的记录集. 操作步骤:

如何使用Ruby脚本调用Oracle存储过程

使用Ruby脚本调用Oracle存储过程的示例: 1.首先创建Oracle存储过程test: SQL> create OR REPLACE PROCEDURE test(p1 in varchar2,p2 out varchar2 ) is 2 BEGIN 3 select p1 ' PROCEDURE executeD!' into p2 from dual ; 4 end; 5 / Procedure created 2.再写Ruby脚本,调用存储过程test,脚本内容如下,将脚本保存为:

各位帮我看下VB调用oracle存储过程的一个异常

问题描述 各位帮我看下VB调用oracle存储过程的一个异常 接了一个接口的活,VB写的,调用第三方提供的存储过程出现一个异常,如下:System.Data.OleDb.OleDbException: 未指定的错误 at System.Data.OleDb.OleDbCommand.ProcessResults(Int32 hr) at System.Data.OleDb.OleDbCommand.InitializeCommand(CommandBehavior behavior Boolea

oracle11g-vs2012调用oracle存储过程返回输出字符串的值的问题

问题描述 vs2012调用oracle存储过程返回输出字符串的值的问题 vs2012调用oracle存储过程返回输出字符串的值的问题,在plsql中执行存储过程是没有问题的,输出的字符串也有值,但在vs中取输出参数的值时,此字符串的值为null,但 如果输出为整数,则可以得到返回值. 解决方案 贴出你的代码看看.你的参数传的对不对 解决方案二: OracleConnection conn = new OracleConnection(connstr); conn.Open(); OracleCo