Spring JDBC - Antarmuka ResultSetExtractor

Itu org.springframework.jdbc.core.ResultSetExtractorantarmuka adalah antarmuka panggilan balik yang digunakan oleh metode kueri JdbcTemplate. Implementasi antarmuka ini melakukan pekerjaan sebenarnya untuk mengekstrak hasil dari ResultSet, tetapi tidak perlu khawatir tentang penanganan pengecualian.

SQLExceptions akan ditangkap dan ditangani oleh panggilan JdbcTemplate. Antarmuka ini terutama digunakan dalam kerangka JDBC itu sendiri. RowMapper biasanya merupakan pilihan yang lebih sederhana untuk pemrosesan ResultSet, memetakan satu objek hasil per baris, bukan satu objek hasil untuk seluruh ResultSet.

Deklarasi Antarmuka

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

public interface ResultSetExtractor

Pemakaian

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

Step 2 - Gunakan metode objek JdbcTemplate untuk membuat operasi database sambil mem-parse kumpulan hasil menggunakan ResultSetExtractor.

Contoh

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

Sintaksis

public List<Student> listStudents() {
   String SQL = "select * from Student";
      List <Student> students = jdbcTemplateObject.query(SQL, 
         new ResultSetExtractor<List<Student>>(){
         
         public List<Student> extractData(
            ResultSet rs) throws SQLException, DataAccessException {
            
            List<Student> list = new ArrayList<Student>();  
            while(rs.next()){  
               Student student = new Student();
               student.setId(rs.getInt("id"));
               student.setName(rs.getString("name"));
               student.setAge(rs.getInt("age"));
               student.setDescription(rs.getString("description"));
               student.setImage(rs.getBytes("image"));
               list.add(student);  
            }  
            return list;  
         }    	  
      });
   return students;
}

Dimana,

  • SQL - Pilih kueri untuk membaca siswa.

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

  • ResultSetExtractor - Object ResultSetExtractor untuk mengurai objek resultet.

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
      * all the records from the Student table.
   */
   public List<Student> listStudents();
}

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 adalah file kelas implementasi StudentJDBCTemplate.java untuk antarmuka DAO yang ditentukan StudentDAO.

package com.tutorialspoint;

import java.util.List;
import java.util.ArrayList;
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 List<Student> listStudents() {
      String SQL = "select * from Student";
      List <Student> students = jdbcTemplateObject.query(SQL, 
         new ResultSetExtractor<List<Student>>(){
         
         public List<Student> extractData(
            ResultSet rs) throws SQLException, DataAccessException {
            
            List<Student> list = new ArrayList<Student>();  
            while(rs.next()){  
               Student student = new Student();
               student.setId(rs.getInt("id"));
               student.setName(rs.getString("name"));
               student.setAge(rs.getInt("age"));
               student.setDescription(rs.getString("description"));
               student.setImage(rs.getBytes("image"));
               list.add(student);  
            }  
            return list;  
         }    	  
      });
      return students;
   }
}

Berikut ini adalah konten dari MainApp.java mengajukan.

package com.tutorialspoint;

import java.util.List;

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

      List<Student> students = studentJDBCTemplate.listStudents();

      for(Student student: students){
         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
ID : 3, Age : 18