java - SimpleJdbcCall 不能调用多个程序

标签 java spring jdbc spring-jdbc

SimpleJdbcCall 不能调用多个程序

这是我的测试代码:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;


public class TestCall {

    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "spring/applicationContext.xml",
                        "spring/applicationDb.xml" });

        SimpleJdbcCall call = context.getBean("simpleJdbcCall",
                SimpleJdbcCall.class);

        call.withProcedureName("proc1").execute("p1", "p2");

        System.out.println("CallString: " + call.getCallString());

        call.withProcedureName("proc2").execute("p1");

        System.out.println("CallString: " + call.getCallString());

    }
}

在代码中,我定义了simpleJdbcCall

<bean id="simpleJdbcCall" class="org.springframework.jdbc.core.simple.SimpleJdbcCall" >
    <constructor-arg ref="dataSource" />
</bean>

过程 proc1 接收 2 个参数,过程 proc2 接收 1 个参数。

运行时出现异常

然后调试发现AbstractJdbcCall.callString还是 CallString:{call proc1(?, ?)} 当调用 proc2 时。

那么,这是 Spring 的错误吗?

有没有人告诉我如何联系作者 Thomas Risberg?

最佳答案

So, is it a Spring's bug ?

不,您只是使用不当。 documentation for SimpleJdbcCall 可能更明确,但它确实说:

A SimpleJdbcCall is a multi-threaded, reusable object representing a call to a stored procedure or a stored function.

换句话说,SimpleJdbcCall 的每个实例都被配置为调用特定的存储过程。一旦配置,不应更改。

如果需要调用多个存储过程,则需要有多个SimpleJdbcCall对象。

关于java - SimpleJdbcCall 不能调用多个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592814/

相关文章:

java - 限制基于 Java 的 Web 服务器 TLS 协议(protocol)以供 Wireshark 检查

java - 一旦变量设置为 false,如何停止线程?

java - 当设置@GeneratedValue 时,Hibernate 不生成表

java - ConfigurationProperties 将属性名称与 yaml 文件中的数字绑定(bind)

java - 如何使用 Spring Boot 在 mysql 中保存图像?我怎样才能取回它?我在注册时收到 400 错误

其他用户表的 Oracle 连接字符串

java - 如何在 Spring JDBC 中获取当前的 Connection 对象

java - 如何理解 Realm 在 android 上的行为?

java - Netbeans 中的 JTable-SQLite 绑定(bind)问题

java - Spring 注入(inject) Guava 缓存