首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleJdbcCall不能调用多个过程

SimpleJdbcCall不能调用多个过程
EN

Stack Overflow用户
提问于 2011-07-06 15:15:12
回答 2查看 7.3K关注 0票数 9

SimpleJdbcCall不能调用多个过程

这是我的测试代码:

代码语言:javascript
复制
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

代码语言:javascript
复制
<bean id="simpleJdbcCall" class="org.springframework.jdbc.core.simple.SimpleJdbcCall" >
    <constructor-arg ref="dataSource" />
</bean>

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

当我运行它的时候,发生了异常。

然后我进行了调试,当调用proc2时,AbstractJdbcCall.callString仍然是CallString:{call proc1(?, ?)}

那么,它是Spring的bug吗?

有没有人能告诉我怎么联系作者Thomas Risberg?

EN

回答 2

Stack Overflow用户

发布于 2011-07-06 16:14:09

那么,这是一个

的bug吗?

不,你只是在错误地使用它。SimpleJdbcCalldocumentation可能会更明确,但它确实说明了:

SimpleJdbcCall是一个多线程的、可重用的对象,表示对存储过程或存储函数的调用。

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

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

票数 21
EN

Stack Overflow用户

发布于 2013-03-23 05:12:50

这个概念在spring参考文档中似乎不是很清楚,因为其中的所有示例都只有一个SimpleJdbcCall实例,该实例用于一个示例过程。

每个唯一的存储过程需要一个SimpleJdbcCall实例,并且SimpleJdbcCall实例只需要初始化一次。一旦初始化,它们就是线程安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6592814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档