我们有一个 Oracle 存储过程,它以 SYS_REFCURSOR 类型的 OUT 参数返回其结果。我们想通过一个 MyBatis 映射器来调用它,@Select 注解中查询字符串的相关部分如下所示
@Select(value="call " + SCHEMA_NAME + "." + STORED_PROCEDURE_NAME +
"(" + ...
"#{" + P_RECORDSET_FIELD + ",javaType=java.sql.ResultSet,jdbcType=CURSOR,mode=OUT,resultMap=ownNameSpace.ownResultMap}," +
...
其中 resultMap 属性指的是以下 XML 配置
<mapper namespace="ownNameSpace">
<resultMap id="ownResultMap" type="com.ownpackage.OwnResultType">
<result column="COLUMN_1" property="property1" />
...
这非常有效,DAO 类使用映射器成功地从数据库中检索到预期结果。然而,我们想知道是否有可能在没有 XML 的情况下仅使用注释来解决这个问题。MyBatis 有 @Results/@Result/@ResultMap 注释,我们成功地将其用于带有 ResultSet 的 SP,但到目前为止,我们还没有真正找到 OUT 参数的解决方案。类似的示例通常归结为使用混合注释+XML 配置。例如,以下教程的作者似乎遇到了同样的问题,尽管它已经有几年历史了:https ://dzone.com/articles/ibatis-mybatis-working-stored (请参阅第四个示例的注释)这是否可行有吗?