使用 Spring 的 JDBC 支持获取输出参数
Posted
技术标签:
【中文标题】使用 Spring 的 JDBC 支持获取输出参数【英文标题】:Using Spring's JDBC support to get output parameters 【发布时间】:2009-08-18 14:31:22 【问题描述】:我正在使用 Spring 的 JDBC 支持在 Oracle 数据库上运行 SQL 查询和更新。我想插入一行,然后获取分配给它的键(使用 Oracle 序列)。在普通的 JDBC 代码中,我会包含一个 RETURNING INTO 子句,然后注册一个输出参数 (well described here)
但是,我只想使用 Spring 来处理我所有的 JDBC 工作。对于非插入 SQL 语句,我目前正在使用 MapSqlParameterSource 对象并注册我的所有输入参数。我也可以注册这样的输出参数并将其返回给我吗?我查看了 Spring 文档的第 11 章部分,如果我使用存储过程,我发现支持输出参数,但如果可能的话,我想避免这样做。谢谢。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于使用 Spring 的 JDBC 支持获取输出参数的主要内容,如果未能解决你的问题,请参考以下文章