Antarmuka PreparedStatementSetter

Itu org.springframework.jdbc.core.PreparedStatementSetterantarmuka bertindak sebagai antarmuka panggilan balik umum yang digunakan oleh kelas JdbcTemplate. Antarmuka ini menetapkan nilai pada PreparedStatement yang disediakan oleh kelas JdbcTemplate, untuk setiap sejumlah pembaruan dalam satu batch menggunakan SQL yang sama.

Implementasi bertanggung jawab untuk menetapkan parameter yang diperlukan. SQL dengan placeholder sudah disediakan. Lebih mudah menggunakan antarmuka ini daripada PreparedStatementCreator. JdbcTemplate akan membuat PreparedStatement, dengan callback hanya bertanggung jawab untuk menyetel nilai parameter.

Deklarasi Antarmuka

Berikut adalah deklarasi untuk antarmuka org.springframework.jdbc.core.PreparedStatementSetter -

public interface PreparedStatementSetter

Pemakaian

Step 1 - Buat objek JdbcTemplate menggunakan sumber data yang dikonfigurasi.

Step 2 - Gunakan metode objek JdbcTemplate untuk membuat operasi database sambil meneruskan objek PreparedStatementSetter untuk menggantikan placeholder dalam kueri.

Contoh

Contoh berikut akan menunjukkan cara membaca kueri menggunakan kelas JdbcTemplate dan antarmuka PreparedStatementSetter. Kami akan membaca catatan siswa yang tersedia di Tabel Siswa.

Sintaksis

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

Dimana,

  • SQL - Pilih kueri untuk membaca siswa.

  • jdbcTemplateObject - StudentJDBCTemplate object untuk membaca objek siswa dari database.

  • PreparedStatementSetter - PreparedStatementSetter untuk mengatur parameter dalam kueri.

  • StudentMapper - StudentMapper adalah objek RowMapper untuk memetakan setiap rekaman yang diambil ke objek siswa.

Untuk memahami konsep yang disebutkan di atas terkait dengan Spring JDBC, mari kita tulis contoh yang akan memilih kueri. Untuk menulis contoh kita, mari kita memiliki IDE Eclipse yang berfungsi dan menggunakan langkah-langkah berikut untuk membuat aplikasi Spring.

Langkah Deskripsi
1 Perbarui proyek yang dibuat Siswa di bawah bab Musim Semi JDBC - Aplikasi Pertama .
2 Perbarui konfigurasi kacang dan jalankan aplikasi seperti yang dijelaskan di bawah ini.

Berikut ini adalah konten file antarmuka Objek Akses Data 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);
}

Berikut ini adalah konten dari Student.java mengajukan.

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

Berikut ini adalah konten dari StudentMapper.java mengajukan.

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

Berikut adalah file kelas implementasi StudentJDBCTemplate.java untuk antarmuka DAO yang ditentukan StudentDAO.

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

Berikut ini adalah konten dari MainApp.java mengajukan.

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

Berikut adalah file konfigurasinya 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>

Setelah Anda selesai membuat file konfigurasi source dan bean, mari kita jalankan aplikasi. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.

ID : 1, Age : 17