避免多次创建 SimpleJdbcCall

Posted

技术标签:

【中文标题】避免多次创建 SimpleJdbcCall【英文标题】:Avoid Creating SimpleJdbcCall multiple times 【发布时间】:2021-01-09 22:28:41 【问题描述】:

我必须在 Service layer 调用 callDb 大约 20,000。下面是它需要 30 分钟,因为我正在创建 每次调用 SimpleJdbcCall 对象..如何避免为每次调用创建 SimpleJdbcCall 对象。

@Repository
public class JdbcActorDao  



 void callDb ( ) 
 
 
 
 
 
        SimpleJdbcCall simpleJdbcCall =
                new SimpleJdbcCall(jdbcTemplate)
                        .withProcedureName("read_actor")
                        .withoutProcedureColumnMetaDataAccess()
                        .useInParameterNames("in_id")
                        .declareParameters(
                                new SqlParameter("in_id", Types.NUMERIC),
                                new SqlOutParameter("out_first_name", Types.VARCHAR),
                                new SqlOutParameter("out_last_name", Types.VARCHAR),
                                new SqlOutParameter("out_birth_date", Types.DATE)
                        );
    




simpleJdbcCall.execute(...) ;



【问题讨论】:

【参考方案1】:

您可以将simpleJdbcCall作为字段添加到类中,并添加一个@PostConstruct方法来初始化SimpleJdbcCall。

这样

private SimpleJdbcCall simpleJdbcCall;

@PostConstruct
public void init() 
     simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate)
                        .withProcedureName("read_actor")
                        .withoutProcedureColumnMetaDataAccess()
                        .useInParameterNames("in_id")
                        .declareParameters(
                                new SqlParameter("in_id", Types.NUMERIC),
                                new SqlOutParameter("out_first_name", Types.VARCHAR),
                                new SqlOutParameter("out_last_name", Types.VARCHAR),
                                new SqlOutParameter("out_birth_date", Types.DATE)
    );


public void performCall() 
    simpleJdbcCall.execute(...) ;

【讨论】:

太棒了。将您的答案标记为正确。一旦我测试它

以上是关于避免多次创建 SimpleJdbcCall的主要内容,如果未能解决你的问题,请参考以下文章

如何避免多次加载外部库? npm包,browserify和脚本标签

#JS 窗口resize避免触发多次

避免多次提交

easylogging++ 如何避免多次初始化

Swift 属性 - 避免对 n 类进行多次声明?

避免在 UPDATE 语句中多次调用标量函数