我在Spring Dao中有以下代码,它可以正常工作 -
Object args[] = { userId, restaurantId };
int userOrderCount = getJdbcTemplate()
.queryForInt(
"SELECT COUNT(orderid) FROM orders WHERE useridfk_order = ? AND restaurantidfk_order = ?",
args
);
然而,如果我决定像以下这样使用命名参数来查询 -
int userOrderCount = getNamedParameterJdbcTemplate()
.queryForInt(
"SELECT COUNT(orderid) FROM orders WHERE useridfk_order = :userId AND restaurantidfk_order = :restaurantId",
new MapSqlParameterSource(":restaurantId", restaurantId)
.addValue(":userId", userId)
);
我收到了这个异常 -org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'userId': No value registered for key 'userId'.
我知道那个黄金格言,即“不破坏它,如果它没有问题的话”。
但是,我还是忍不住想知道为什么会发生这种情况?