Spring Ders17 - Database ( Veritabanı ) - NamedParameterJdbcTemplate
NamedParameterJdbcTemplate sınıfı (class), veritabanına verileri parametreler ile eklemeyi sağlayan bir arayüzdür. Diğer arayüzlerde parametre yerine soru işareti (?) kullanılıyordu ve argüman gönderirken hangi kolonda hangi verinin olduğunu bilmemiz gerekiyordu. Burada ise direkt olarak ilgili kolonu belirterek veriyi gönderebiliyoruz.
NamedParameterJdbcTemplate sınıfında kullanılan execute metodunun imzası (signature) aşağıda verilmiştir.
Main.java
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); BilgiIslem bilgici = (BilgiIslem) context.getBean("bilgiislem"); Personel p1=new Personel(1,"enes",3000); Personel p2=new Personel(2,"cetin",5000); bilgici.kaydet(p1); bilgici.kaydet(p2); } }
Personel.java
package test; public class Personel { private int id; private int maas; private String ad; public Personel() { } public Personel(int id, String ad, int maas) { this.id = id; this.ad = ad; this.maas = maas; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getMaas() { return maas; } public void setMaas(int maas) { this.maas = maas; } public String getAd() { return ad; } public void setAd(String ad) { this.ad = ad; } }
BilgiIslem.java
package test; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.PreparedStatementCallback; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; public class BilgiIslem { private NamedParameterJdbcTemplate NPjdbcTemplate; public BilgiIslem() { } public BilgiIslem(NamedParameterJdbcTemplate NPjdbcTemplate) { this.NPjdbcTemplate = NPjdbcTemplate; } public NamedParameterJdbcTemplate getNPjdbcTemplate() { return NPjdbcTemplate; } public void NPjdbcTemplate(NamedParameterJdbcTemplate nPjdbcTemplate) { NPjdbcTemplate = nPjdbcTemplate; } public void kaydet(Personel p) { String sorgu = "insert into bilgiislem values (:id,:ad,:maas)"; Map<String, Object> map = new HashMap<String, Object>(); map.put("id", p.getId()); map.put("ad", p.getAd()); map.put("maas", p.getMaas()); NPjdbcTemplate.execute(sorgu,map,new PreparedStatementCallback<Object>() { @Override public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException { return ps.executeUpdate(); } }); } }
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" /> <property name="username" value="system" /> <property name="password" value="****" /> </bean> <bean id="NPjdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="ds"></constructor-arg> </bean> <bean id="bilgiislem" class="test.BilgiIslem"> <constructor-arg ref="NPjdbcTemplate" /> </bean> </beans>
test.sql
create table bilgiislem( id int, ad varchar(255), maas int );
Yorumlar
Yorum Gönder