我正在开发一个需要对 Oracle 数据库进行 JDBC 调用的项目。我已经设置了 UCP 池以使用 SpringJDBC。我有一个相当简单的查询,我正在执行如下...
SELECT * FROM TABLE WHERE ID IN (:ids)
我设置此查询的 java 代码如下所示...
NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(datasource);
Map<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("ids", Arrays.asList(idArray));
List<Result> results = template.query("SELECT * FROM TABLE WHERE ID IN (:ids)",
paramMap, new ResultRowMapper());
只要数组中只有 1 个 id,这一切都可以正常运行。当我添加第二个 ID 时,查询需要将近 5 分钟才能运行。如果我采用确切的查询并在 SQLDeveloper 中执行它,则需要 0.093 秒。
我的代码或配置一定出了问题……有人有什么想法吗?
编辑:
我去掉了 Spring NamedParameterJdbcTemplate 的使用,只使用了直接的 Jdbc,一切似乎都表现得很好。NamedParameterJdbcTemplate 有什么不同?