【问题标题】:Using Spring's JDBC support to get output parameters使用 Spring 的 JDBC 支持获取输出参数
【发布时间】:2009-08-18 14:31:22
【问题描述】:

我正在使用 Spring 的 JDBC 支持在 Oracle 数据库上运行 SQL 查询和更新。我想插入一行,然后获取分配给它的键(使用 Oracle 序列)。在普通的 JDBC 代码中,我会包含一个 RETURNING INTO 子句,然后注册一个输出参数 (well described here)

但是,我只想使用 Spring 来处理我所有的 JDBC 工作。对于非插入 SQL 语句,我目前正在使用 MapSqlParameterSource 对象并注册我的所有输入参数。我也可以注册这样的输出参数并将其返回给我吗?我查看了 Spring 文档的第 11 章部分,如果我使用存储过程,我发现支持输出参数,但如果可能的话,我想避免这样做。谢谢。

【问题讨论】:

    标签: java sql spring jdbc output-parameter


    【解决方案1】:

    我不认为 Spring JDBC 支持 API 提供了对 OUT 参数的显式支持,因此您可能需要退后一步,使用JdbcTemplate 提供的更通用的查询 API:

    Object execute(PreparedStatementCreator psc, PreparedStatementCallback action)
    

    这使您可以在 Spring 管理的连接和PrepatedStatement 范围内执行任意 JDBC 操作。缺点是ResultSets 之类的处理和整理成为您的问题。

    【讨论】:

    • 我害怕那个。不过,我将不得不查看 PreparedStatementCreator。我使用 Spring 的主要原因是从框架中获取连接信息并保持我的 JDBC 代码整洁。看来我又回到了 try/catch/finally 代码。
    • Spring 仍然会为你做连接和报表的管家工作。
    【解决方案2】:

    查看此代码 - 它可能会执行您想要的操作,但不确定 Oracle 是否支持此语法。

    getReturnedGeneratedKeys() Spring JDBC Excample

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-26
      • 2018-05-29
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 2012-03-18
      相关资源
      最近更新 更多