JdbcTemplate.queryForObject. В случае если записи нет - он выкинет эксепшн. Чтобы вернуть null рекомендуют просто ловить этот эксепшн и возвращать null, но мне кажется это не самый лучший способ.query(String sql, ResultSetExtractor<T> rse), но он почему-то вызывает ResultSetExtractor.extractData, даже если БД вернула 0 строк.