Mybatis:Oracle 嵌套集合
Mybatis : Oracle Nested Collection
如何使用 mybatis 映射器(没有类型处理程序) 从存储过程中获取 DB 嵌套集合。
例如:存储过程 returns 以下类型的 DB table 对象:
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);
,你是对的。对于自定义数据库类型,自定义类型处理程序是必须的。这是告诉 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
中不受支持。
如何使用 mybatis 映射器(没有类型处理程序) 从存储过程中获取 DB 嵌套集合。 例如:存储过程 returns 以下类型的 DB table 对象:
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);
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
中不受支持。