java中ibatis和oracle中传递和返回自定义数组对象
我已经四处寻找一个很好的例子,但我还没有遇到一个。 我想使用 IBATIS 框架将自定义字符串数组从 java 传递到 oracle 并返回。 有人有一个很好的示例链接吗? 我正在从 IBATIS 调用存储过程。
谢谢
I've looked around for a good example of this, but I haven't run into one yet. I want to pass a custom string array from java to oracle and back, using the IBATIS framework. Does anyone have a good link to an example? I'm calling stored procs from IBATIS.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您必须从
TypeHandler
的自定义实例开始。 我们更愿意实现更简单的TypeHandlerCallback
,但在这种情况下,我们需要访问底层的Connection
。然后,将其连接到 iBATIS 配置中:
希望这会有所帮助!
You've got to start with a custom instance of
TypeHandler
. We'd prefer to implement the simplerTypeHandlerCallback
, but in this scenario we need access to the underlyingConnection
.Then, to wire it up in the iBATIS config:
Hope this helps!
bsanders 给了我一个很好的起点 - 这是我必须做的才能使其在 RAD 环境(websphere 6.2)中工作。
请注意我必须获取的 nativeConnection、我必须创建的描述符,等等。 然而,虽然我可以将内容作为字符串数组传递到数据库中,但我无法弄清楚为什么我没有得到任何信息。 我的 OUT 参数(getResult(CallableStatement 语句, int i) 抛出空指针异常,即使我在数据库的 plsql 中设置 out 参数。
以下是我访问它的方式:
有什么想法吗?
bsanders gave me a good starting point - here's what I had to do to make it work within the RAD environment (websphere 6.2).
Notice the nativeConnection I had to get, the descriptor I had to make, and so on. However, while I can pass things into the database as an array of Strings, I haven't been able to figure out why I'm not getting anything back. My OUT parameter (the getResult(CallableStatement statment, int i) is throwing a null pointer exception, even though I'm setting the out parameter in the plsql in the database.
Here is how I'm accessing it:
Any ideas?
好吧,公司里的人找到了解决方案:您需要在 typeHandler 中实现 getResult 方法,并在映射器中提供附加属性 jdbcTypeName=ORACLE_REAL_ARRAY_TYPE
Well, guys in company found out the solution: you need to have implemented getResult method(s) in your typeHandler and provided additional attribute jdbcTypeName=ORACLE_REAL_ARRAY_TYPE in your mapper
尝试使用statement.getObject(i),然后转换为数组。
Try using
statement.getObject(i)
and then casting to an array.