获取零个或一个记录而不是记录列表

时间:2013-09-05 20:35:36

标签: java spring jdbctemplate

使用Spring JDBC我发现自己总是这样做:

NamedParameterJdbcTemplat njt = ...;

String SQL = "SELECT blah FROM blah_table WHERE column = :condition";
SqlParameterSource params = new MapSqlParameterSource('condition', variableName);
List<Integer> rows = njt.query(SQL, params, Integer.class);

if(rows.size() == 0)
{
    //record did not exist, whew avoided index out of bounds exception
}

//do something with rows.get(0);

必须有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用queryForObject,例如:

Integer i = null;
try {
    i = template.queryForObject(sql, Integer.class, args);
} catch (EmptyResultDataAccessException e) { // zero rows
}

您可以编写自己的包装器方法来处理EmptyResultDataAccessException并使其更清晰。