Интерфейс org.springframework.jdbc.core.ResultSetExtractor — это интерфейс обратного вызова, используемый методами запросов JdbcTemplate. Реализации этого интерфейса выполняют фактическую работу по извлечению результатов из ResultSet, но не нужно беспокоиться об обработке исключений.
SQLExceptions будет перехвачен и обработан вызывающим JdbcTemplate. Этот интерфейс в основном используется в самой структуре JDBC. RowMapper обычно является более простым выбором для обработки ResultSet, отображая один результирующий объект на строку вместо одного результирующего объекта для всего ResultSet.
Декларация интерфейса
Ниже приводится объявление для интерфейса org.springframework.jdbc.core.ResultSetExtractor —
public interface ResultSetExtractor
использование
Шаг 1 — Создайте объект JdbcTemplate, используя настроенный источник данных.
Шаг 2. Используйте методы объекта JdbcTemplate для выполнения операций с базой данных при анализе результирующего набора с помощью ResultSetExtractor.
пример
В следующем примере будет показано, как прочитать запрос, используя класс JdbcTemplate и интерфейс ResultSetExtractor. Мы прочтем доступную запись студента в таблице учеников.
Синтаксис
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; }
Куда,
-
SQL — Выберите запрос для чтения студентов.
-
jdbcTemplateObject — объект StudentJDBCTemplate для чтения объекта ученика из базы данных.
-
ResultSetExtractor — ResultSetExtractor объект для анализа объекта набора результатов.
SQL — Выберите запрос для чтения студентов.
jdbcTemplateObject — объект StudentJDBCTemplate для чтения объекта ученика из базы данных.
ResultSetExtractor — ResultSetExtractor объект для анализа объекта набора результатов.
Чтобы понять вышеупомянутые концепции, связанные с Spring JDBC, давайте напишем пример, который выберет запрос. Чтобы написать наш пример, давайте создадим рабочую среду Eclipse и используем следующие шаги для создания приложения Spring.
шаг | Описание |
---|---|
1 | Обновление проекта Student создано в главе Spring JDBC — First Application . |
2 | Обновите конфигурацию компонента и запустите приложение, как описано ниже. |
Ниже приводится содержимое файла интерфейса объекта доступа к данным 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(); }
Ниже приводится содержание файла Student.java .
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; } }
Ниже приведен файл класса реализации StudentJDBCTemplate.java для определенного интерфейса DAO 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; } }
Ниже приводится содержание файла MainApp.java .
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()); } } }
Ниже приведен файл конфигурации 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>
Как только вы закончили создавать файлы конфигурации исходного кода и bean-компонента, давайте запустим приложение Если с вашим приложением все в порядке, оно напечатает следующее сообщение.