Java 使用弹簧&x27;s JDBC支持获取输出参数

Java 使用弹簧&x27;s JDBC支持获取输出参数,java,sql,spring,jdbc,output-parameter,Java,Sql,Spring,Jdbc,Output Parameter,我使用Spring的JDBC支持在Oracle数据库上运行SQL查询和更新。我想插入一行,然后获取分配给它的键(使用Oracle序列)。在正常的JDBC代码中,我会包含一个RETURNING-INTO子句,然后注册一个输出参数() 然而,我只想使用Spring为我处理所有JDBC工作。对于非insert SQL语句,我当前正在使用MapSqlParameterSource对象并注册所有输入参数。我也可以注册这样的输出参数并将其返回给我吗?我查看了Spring文档的第11章部分,发现如果我使用存储

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


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

我不认为Spring JDBC support API为OUT参数提供了明确的支持,因此您可能需要退一步,使用由
JdbcTemplate提供的更通用的查询API

Object execute(PreparedStatementCreator psc, PreparedStatementCallback action)

这允许您在Spring管理的连接和
PrepatedStatement
的范围内执行任意JDBC操作。缺点是,
ResultSets
等内容的处理和整理成了您的问题。

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


我很害怕。不过我得看一下准备好的声明。我使用Spring的主要原因是从框架中获取连接信息并保持JDBC代码整洁。看起来我又回到了try/catch/finally代码。Spring仍将为您执行连接和语句管理。