【发布时间】:2013-03-17 16:18:24
【问题描述】:
JdbcTemplate 中的 queryforInt/queryforLong 方法在 Spring 3.2 中已弃用。我不知道为什么或什么被认为是使用这些方法替换现有代码的最佳做法。
一个典型的方法:
int rowCount = jscoreJdbcTemplate.queryForInt(
"SELECT count(*) FROM _player WHERE nameKey = ? AND teamClub = ?",
playerNameKey.toUpperCase(),
teamNameKey.toUpperCase()
);
好的,上面的方法需要改写如下:
Object[] params = new Object[] {
playerNameKey.toUpperCase(),
teamNameKey.toUpperCase()
};
int rowCount = jscoreJdbcTemplate.queryForObject(
"SELECT count(*) FROM _player WHERE nameKey = ? AND teamClub = ?",
params, Integer.class);
显然,这种弃用使 JdbcTemplate 类更简单(或者是吗?)。 QueryForInt 一直是一种方便的方法(我猜)并且已经存在了很长时间。为什么被删除了。结果代码变得更加复杂。
【问题讨论】:
-
你说得对,我不知道为什么我的来源没有
@Deprecated -
将 Spring 版本更新为 3.2.2 - 似乎它首先在这里被弃用
-
我将现有的代码库从 3.1 升级到了 3.2.2,这些方法在所有地方都得到了使用。需要了解为什么以及如何更新代码。
-
请注意 queryForObject 可能返回
null(在您的示例中不是这种情况)。我发现除了从 queryForInt/Long 复制空检查代码之外别无他法。
标签: java spring jdbc jdbctemplate