JdbcTemplate (parametreleri indeks değerleri ile atama)
NamedParameterJdbcTemplate (parametreleri isimlerle atama)
SimpleJdbcTemplate (Java 5 için)
JdbcTemlate Kullanımı
JdbcTemplate bean tanımını şu şekilde yazılır:
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
dataSource tanımlama ve Spring’in veri erişim katmanı için sunduğu desteğe şu blog girdisinde bahsetmiştik. Dao sınıfımız da JdbcDaoSupport sınıfını kalıtmalıdır:
public class OgrenciDaoImpl extends JdbcDaoSupport
implements OgrenciDao{
...
}
Dao sınıfımıza bağımlılık aktarımı ile jdbcTemplate bağlayalım:
<bean id="ogrenciDao" class="dao.OgrenciDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
Veri Tabanına JdbcTemlate ile Kayıt Ekleme:
private static final String OGRENCI_INSERT =
"insert into ogrenci (id, ad, soyad) " +
"values (?,?,?)";
public void saveOgrenci(Ogrenci ogrenci) {
getJdbcTemplate().update(OGRENCI_INSERT,
new Object[] { ogrenci.getId(), ogrenci.getAd(),
ogrenci.getSoyad() });
}
Veri Tabanından JdbcTemlate ile Kayıt Sorgulama
private static final String OGRENCI_SELECT =
"select id, ad, soyad from ogrenci";
private static final String OGRENCI_BY_ID_SELECT =
OGRENCI_SELECT + " where id=?";
public Ogrenci getOgrenciById(long id) {
List matches = getJdbcTemplate().query(OGRENCI_BY_ID_SELECT,
new Object[] { Long.valueOf(id) },
new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum)
throws SQLException, DataAccessException {
Ogrenci ogrenci = new Ogrenci();
ogrenci.setId(rs.getInt(1));
ogrenci.setAd(rs.getString(2));
ogrenci.setSoyad(rs.getString(3));
return ogrenci;
}
});
return matches.size() > 0 ? (Ogrenci) matches.get(0) : null;
}
Burada sorgudan dönen her sıra için JdbcTemplate, RowMapper sınıfının mapRow() yöntemini işletecektir.
NamedParameterJdbcTemplate Kullanımı
NamedParameterJdbcTemplate için yapılması gereken bean tanımları ve örnekler şu şekildedir:
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
public class OgrenciDaoImpl extends NamedParameterJdbcDaoSupport
implements OgrenciDao{
...
private static final String OGRENCI_INSERT =
"insert into ogrenci (id, ad, soyad) " +
"values (:id, :ad, :soyad)";
public void saveOgrenci(Ogrenci ogrenci) {
Map parameters = new HashMap();
parameters.put("id", ogrenci.getId());
parameters.put("password", ogrenci.getAd());
parameters.put("firstName", ogrenci.getSoyad());
getNamedParameterJdbcTemplate().update(OGRENCI_INSERT, parameters);
}
...
}
SimpleJdbcTemplate Kullanımı
Java 5’in getirdiği autoboxing, değişken sayıda parametre geçebilme gibi yenilikleri kullanan SimpleJdbcTemplate için yapılması gereken bean tanımları ve örnekler şu şekildedir:
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
public class OgrenciDaoImpl extends SimpleJdbcDaoSupport
implements OgrenciDao{
...
public void saveOgrenci(Ogrenci ogrenci) {
getSimpleJdbcTemplate().update(OGRENCI_INSERT,
ogrenci.getId(), ogrenci.getAd(),
ogrenci.getSoyad());
}
public Ogrenci getOgrenciById(long id) {
List<Ogrenci> matches = getSimpleJdbcTemplate().query(
OGRENCI_BY_ID_SELECT,
new ParameterizedRowMapper<Ogrenci>() {
public Ogrenci mapRow(ResultSet rs, int rowNum)
throws SQLException {
Ogrenci ogrenci = new Ogrenci();
ogrenci.setId(rs.getInt(1));
ogrenci.setAd(rs.getString(2));
ogrenci.setSoyad(rs.getString(3));
return ogrenci;
}
},
id
);
return matches.size() > 0 ? matches.get(0) : null;
}
...
}
Hiç yorum yok:
Yorum Gönder