当前位置: 首页 > 知识库问答 >
问题:

Spring Mybatis-在mapper.xml中发送数组作为过程调用的输入参数

祝灼光
2023-03-14
<select id="abcd" parameterType="java.util.Map" statementType="CALLABLE">
    {call PKG_xyz.PR_cbcd(
        #{p_array,jdbcType=ARRAY,typeHandler=org.apache.ibatis.type.ArrayTypeHandler,mode=IN},
        #{p_ids,jdbcType=INTEGER,mode=IN},
        #{p_comments,jdbcType=VARCHAR,mode=IN},
        #{p_return_code,jdbcType=INTEGER,mode=OUT},
        #{p_msg_out,jdbcType=VARCHAR,mode=OUT}   
    )}
</select>

共有1个答案

秦安宁
2023-03-14

尝试编写您的自定义打字处理程序,如

public class ArrayTypeHandler implements TypeHandler<YourArrayObject[]>{
}

重写下面的方法,将oracle.sql.array设置为PreparedStatement:-

public void setParameter(PreparedStatement ps, int i,
            YourArrayObject[] parameter, JdbcType jdbcType) throws SQLException {}

这个url可能会帮助您做同样的事情:-如何使用MyBatis将Java对象列表传递给Oracle存储过程?

 类似资料:
  • 我试图从JDBC调用以下pl/sql过程。 这就是我试图调用它的方式,但没有成功: 我刚刚读到oracle jdbc不支持pl/sql结构类型。因此,这在“无效名称模式:test.testrec_r”中失败 如何从Java调用这个过程?理想情况下,只使用java库/API,但这似乎几乎是不可能的,在简单的sql调用中封装pl/sql包并调用它的最佳解决方案是什么? 另外,我正在使用Spring J

  • 问题内容: 是否可以在GET调用中将map作为参数发送?我搜索了,我可以找到列表并设置集合。但是没有找到任何要收集地图的东西。 我尝试了以下方法,我的控制器方法如下所示。 我从邮递员发送了以下请求 一切正常,没有错误和异常。但是我收到的地图看起来像 我希望收到的地图像 问题答案: 这在Spring MVC指南中有记录: 当将注释声明为或参数时,将使用所有请求参数填充地图。 这意味着您当前得到的响应

  • 问题内容: 在我的Ajax代码中,我正在向go lang api发送一个关联数组,但是go lang不会接收任何数组。为什么? 为什么这个Ajax不会将数组发送到Go API?在下面的mvc结构中,我想要接收此数据: 问题答案: 您不能直接将数组从客户端发送到服务器,因为数组定义在两侧可能不相同。 有两种解决方法: 一个。您可以在clinet中将数组转换为json字符串,然后将其作为字符串参数发送

  • 问题内容: 我已经编写了一个VBScript函数来调用存储过程。过去,我编写了许多函数,这些函数使用输入参数调用存储过程,但是在这种情况下,我需要使用Output参数。 在另一个应用程序中,我使用实体框架调用完全相同的存储过程,因此该存储过程很好。 这是我的代码: adParamInput, 50, userId)) cmd.Parameters.Append(cmd.CreateParamete

  • 我想从Java代码调用SQL服务器2008中的一个存储过程。存储过程以用户定义的表类型为参数(基本上是数组)。请给我Java语法来调用存储过程并将数组作为输入参数传递

  • 我正在尝试使用Chrome扩展Postman测试一个简单的PHP页面。当我发送URL参数时,脚本运行良好(例如变量在参数中可用)。当我将它们作为参数发送时,参数仅包含。 剧本: 我错过了什么?