1. queryForObject metodu - sql + Object[] + RowMapper
İmzası şöyle
İmzası şöyle
@Deprecated
@Override
Nullable
public <T> T queryForObject(String sql, @Nullable Object[] args,
RowMapper<T> rowMapper) throws DataAccessException {
Açıklaması şöyle. Tek bir sonuç nesnesi dönmeli, yoksa IncorrectResultSizeDataAccessException fırlatırRowMapper arayüzü ile kullanılır. RowMapper ve ParameterizedRowMapper sınıfları sorgu sonuçlarını nesneye çevirmek için kullanılır. Spring'in sağladığı BeanPropertyRowMapper ile de kullanılabilir.IncorrectResultSizeDataAccessException - if the query does not return exactly one row, or does not return exactly one column in that row
Örnek
Şöyle yaparız
Şöyle yaparız
String sql = "SELECT * FROM users WHERE email = ?";
User user = jdbcTemplate.queryForObject(
sql,
new Object[]{email},
new BeanPropertyRowMapper<>(User.class));
Örnek
Eğer döndürülen nesne tek bir sütun ise RowMapper olmadan kullanılır. Select Name From Employee Where ID = ? sorgusu bir String yani nesne döndürür.
Örnek
Şöyle yaparız.
public Person findById(Integer id) {
return this.template.queryForObject(this.findByIdSql, new Object[]{id},
this.personRowMapper);
}
IncorrectResultSizeDataccessException Eğer veri tabanı boş sonuç dönerse exception fırlatır. Bunu yakalamak gerekir.
Örnek
Şöyle yaparız
public Optional<User> findById(Integer id) {
try {
return Optional.ofNullable(jdbcTemplate
.queryForObject("SELECT * FROM users WHERE id=?", userMapper,id)):
} catch (IncorrectResultSizeDataccessException e) {
return Optional.empty();
}
}
Hiç yorum yok:
Yorum Gönder