SimpleJdbcCall不能调用多个过程

jiu*_*cai 7 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());

    }
}
Run Code Online (Sandbox Code Playgroud)

在代码中,我定义了 simpleJdbcCall

<bean id="simpleJdbcCall" class="org.springframework.jdbc.core.simple.SimpleJdbcCall" >
    <constructor-arg ref="dataSource" />
</bean>
Run Code Online (Sandbox Code Playgroud)

并且程序proc1接收2个参数,并且程序proc2接收1个参数.

当我运行它时,发生异常.

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

那么,这是一个Spring的错误吗?

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

ska*_*man 15

那么,这是一个Spring的错误吗?

不,你只是错误地使用它.该文档SimpleJdbcCall或许是更加明确,但它说:

SimpleJdbcCall是表示到呼叫的多线程,可再利用对象一个存储过程或存储的功能.

换句话说,每个实例SimpleJdbcCall都配置为调用特定的存储过程.配置完成后,不应更改.

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