Я изучаю, как выполнять запрос в базе данных с помощью JDBC в Spring Framework.
Я следую этому руководству: http://www.tutorialspoint.com/spring/spring_jdbc_example.htm
В этом уроке я определяю интерфейс StudentDAO, который определяет только метод CRUD.
Затем определяется класс Студент, который является объектом, который я хочу сохранить в таблице базы данных учащихся.
Затем определяется класс StudentMapper, который представляет собой конкретную реализацию интерфейса RowMapper, который в этом случае используется для сопоставления определенной записи в ResultSet (возвращенный запросом) в объект Студент.
Затем у меня есть StudentJDBCTemplate, который представляет реализацию моего интерфейса StudentDAO, в этом классе я реализую метод CRUD, который был определен в интерфейсе.
Хорошо, и теперь у меня есть сомнение в том, как работает класс StudentMapper: в этом классе StudentJDBCTemplate указан метод, который возвращает список всех записей, которые в таблице базы данных Студента:
public List<Student> listStudents() {
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL,
new StudentMapper());
return students;
}
Как вы можете видеть, этот метод возвращает объект List of Student и работает следующим образом:
первое, что он делает, это определить запрос, который возвращает всю запись в таблице базы данных Student в SQL String.
Затем этот запрос выполняется вызовом метода запроса в объекте jdbcTemplateObject (это istance JdbcTemplate Spring class **
Этот метод принимает два параметра: SQL String (содержащий SQL-запрос, который должен быть выполнен) и новый объект StudentMapper, который принимает объект ResultSet, возвращенный запросить и сопоставить запись на новом объекте Student
Чтение здесь: http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html sayas, что: Выполнять запрос, заданный статическим SQL, сопоставляя каждую строку с объектом Java через RowMapper.
Мое сомнение связано с тем, что мой StudentMapper сопоставляет запись ResultSet на объекте Student с помощью метода mapRow(), это код:
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;
}
}
Итак, кто вызывает этот метод mapRow? это автоматически называется Spring Framework? (потому что в этом примере никогда не вызывается вручную...)
Тпх
Andrea
Затем этот запрос выполняется вызовом метода запроса в объекте jdbcTemplateObject (это istance JdbcTemplate Spring class **