【问题标题】:Mybatis : Oracle Nested CollectionMybatis:Oracle嵌套集合
【发布时间】:2016-08-25 17:02:29
【问题描述】:

如何使用 mybatis 映射器(没有类型处理程序) 从存储过程中获取 DB 嵌套集合。 eg:存储过程返回以下类型的数据库表对象:

TYPE class_list IS TABLE OF class ;

在哪里

TYPE class AS OBJECT (students student_list, class_teacher teacher);
TYPE student_list IS TABLE OF student;
TYPE student AS OBJECT (name VARCHAR2, age NUMBER, marks NUMBER);
TYPE teacher AS OBJECT (name VARCHAR2, qualification VARCHAR2, phone_number NUMBER);

【问题讨论】:

  • 国际海事组织,你不能。映射器是常见用例的答案。获取复杂(依赖于供应商)类型更加开箱即用,然后需要类型处理程序。
  • 说得对@blackwizard。 MyBatis 为已知类型(如 varchar、number 等)提供了一堆类型处理程序。但是对于自定义对象,需要自定义类型处理程序。

标签: mybatis oracle-type


【解决方案1】:

@blackwizard,你是对的。对于自定义 DB 类型,自定义类型处理程序是必须的。这是告诉mybatis它正在处理自定义对象的语法(jdbcTypeName):

{call YOUR_PACKAGE.YOUR_PROCEDURE(
    #{your_input_parameter, jdbcType=VARCHAR mode=IN javaType=java.lang.String mode=IN },
    #{your_output_parameter, jdbcType=ARRAY mode=OUT jdbcTypeName=class_list typeHandler=custom_typeHandler})}

注意:已弃用的parameterMap 不支持此功能。

【讨论】:

  • 你有没有机会分享一个 typeHandler 的例子?
猜你喜欢
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多