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