#java #mybatis
#java #mybatis
Вопрос:
Мы используем MyBatis для ORM. Мне нужно вызвать функцию Oracle, которая принимает курсор в качестве параметра. Было бы идеально, если бы MyBatis мог сопоставить объект Java с курсором, но я сомневаюсь, что это возможно.
Есть идеи, как это сделать?
Пожалуйста, обратите внимание, что я знаю, как сопоставить курсор, возвращенный из функции, с объектом Java. Проблема в другом.
Ответ №1:
Кажется, что единственное решение — создать блок, объявить курсор и передать его функции вручную:
<select id="..." parameterType="..." statementType="CALLABLE">
declare
my_cursor SYS_REFCURSOR;
begin
OPEN my_cursor FOR
<foreach item="item" collection="..." separator=" union all ">
SELECT #{item.key} as key, ... FROM dual
</foreach> ;
#{result,jdbcType=CURSOR,mode=OUT,resultMap=...,javaType=java.sql.ResultSet} := our_function(my_cursor => my_cursor);
end;
</select>