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.


pubic T execute(String sql,Map map,PreparedStatementCallback psc);


Şimdi örnek programımızı yapalım.

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
);

spring database namedparameterjdbctemplate

Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)