PreparedStatementSetter Arayüzü

org.springframework.jdbc.core.PreparedStatementSetterarabirim, JdbcTemplate sınıfı tarafından kullanılan genel bir geri arama arabirimi görevi görür. Bu arabirim, aynı SQL'i kullanan bir toplu işteki bir dizi güncellemenin her biri için JdbcTemplate sınıfı tarafından sağlanan bir PreparedStatement üzerindeki değerleri ayarlar.

Uygulamalar, gerekli parametrelerin ayarlanmasından sorumludur. Yer tutucularla SQL zaten sağlanmış olacaktır. Bu arabirimi kullanmak PreparedStatementCreator'dan daha kolaydır. JdbcTemplate, yalnızca parametre değerlerinin ayarlanmasından sorumlu olan geri çağırma ile PreparedStatement'ı oluşturur.

Arayüz Beyanı

Org.springframework.jdbc.core.PreparedStatementSetter arabiriminin bildirimi aşağıdadır -

public interface PreparedStatementSetter

Kullanım

Step 1 - Yapılandırılmış bir veri kaynağı kullanarak bir JdbcTemplate nesnesi oluşturun.

Step 2 - Sorgudaki yer tutucuları değiştirmek için PreparedStatementSetter nesnesini geçerken veritabanı işlemleri yapmak için JdbcTemplate nesne yöntemlerini kullanın.

Misal

Aşağıdaki örnek, JdbcTemplate sınıfı ve PreparedStatementSetter arabirimi kullanılarak bir sorgunun nasıl okunacağını gösterecektir. Öğrenci Masasında bir öğrencinin mevcut kaydını okuyacağız.

Sözdizimi

final String SQL = "select * from Student where id = ? ";
List <Student> students = jdbcTemplateObject.query(
   SQL, new PreparedStatementSetter() {
   
   public void setValues(PreparedStatement preparedStatement) throws SQLException {
      preparedStatement.setInt(1, id);
   }
},
new StudentMapper());

Nerede,

  • SQL - Öğrencileri okumak için sorguyu seçin.

  • jdbcTemplateObject - Öğrenci nesnesini veritabanından okumak için StudentJDBCTemplate nesnesi.

  • PreparedStatementSetter - Sorgudaki parametreleri ayarlamak için PreparedStatementSetter nesnesi.

  • StudentMapper - StudentMapper, alınan her kaydı öğrenci nesnesine eşlemek için bir RowMapper nesnesidir.

Spring JDBC ile ilgili yukarıda bahsedilen kavramları anlamak için bir sorgu seçecek bir örnek yazalım. Örneğimizi yazmak için, yerinde çalışan bir Eclipse IDE'ye sahip olalım ve bir Spring uygulaması oluşturmak için aşağıdaki adımları kullanalım.

Adım Açıklama
1 Spring JDBC - First Application bölümünde oluşturulan öğrenci projesini güncelleyin .
2 Fasulye yapılandırmasını güncelleyin ve uygulamayı aşağıda açıklandığı gibi çalıştırın.

Veri Erişim Nesnesi arayüz dosyasının içeriği aşağıdadır StudentDAO.java.

package com.tutorialspoint;

import java.util.List;
import javax.sql.DataSource;

public interface StudentDAO {
   /** 
      * This is the method to be used to initialize
      * database resources ie. connection.
   */
   public void setDataSource(DataSource ds);
   
   /** 
      * This is the method to be used to list down
      * a record from the Student table corresponding
      * to a passed student id.
   */
   public Student getStudent(Integer id);
}

Aşağıdakilerin içeriği Student.java dosya.

package com.tutorialspoint;

public class Student {
   private Integer age;
   private String name;
   private Integer id;

   public void setAge(Integer age) {
      this.age = age;
   }
   public Integer getAge() {
      return age;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public Integer getId() {
      return id;
   }
}

Aşağıdakilerin içeriği StudentMapper.java dosya.

package com.tutorialspoint;

import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setId(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

Uygulama sınıfı dosyası aşağıdadır StudentJDBCTemplate.java tanımlı DAO arayüzü StudentDAO için.

package com.tutorialspoint;

import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;

public class StudentJDBCTemplate implements StudentDAO {
   private DataSource dataSource;
   private JdbcTemplate jdbcTemplateObject;
   
   public void setDataSource(DataSource dataSource) {
      this.dataSource = dataSource;
      this.jdbcTemplateObject = new JdbcTemplate(dataSource);
   }
   public Student getStudent(final Integer id) {
      final String SQL = "select * from Student where id = ? ";
      List <Student> students = jdbcTemplateObject.query(
         SQL, new PreparedStatementSetter() {
		   
         public void setValues(PreparedStatement preparedStatement) throws SQLException {
            preparedStatement.setInt(1, id);
         }
      },
      new StudentMapper());
      return students.get(0);
   }
}

Aşağıdakilerin içeriği MainApp.java dosya.

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
      StudentJDBCTemplate studentJDBCTemplate = 
         (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");
      
      Student student = studentJDBCTemplate.getStudent(1);
      System.out.print("ID : " + student.getId() );
      System.out.println(", Age : " + student.getAge()); 
   }
}

Yapılandırma dosyası aşağıdadır Beans.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-3.0.xsd ">

   <!-- Initialization for data source -->
   <bean id = "dataSource" 
      class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name = "driverClassName" value = "com.mysql.jdbc.Driver"/>
      <property name = "url" value = "jdbc:mysql://localhost:3306/TEST"/>
      <property name = "username" value = "root"/>
      <property name = "password" value = "admin"/>
   </bean>

   <!-- Definition for studentJDBCTemplate bean -->
   <bean id = "studentJDBCTemplate" 
      class = "com.tutorialspoint.StudentJDBCTemplate">
      <property name = "dataSource" ref = "dataSource" />    
   </bean>
      
</beans>

Kaynak ve bean yapılandırma dosyalarını oluşturmayı tamamladığınızda uygulamayı çalıştırmamıza izin verin. Uygulamanızda her şey yolundaysa, aşağıdaki mesajı yazdıracaktır.

ID : 1, Age : 17