Uczę się, jak wykonać zapytanie do bazy danych za pomocą JDBC w Spring Framework.Pewne wątpliwości dotyczące użycia RowMapper w JDBC w aplikacji Spring Framework
śledzę ten tutorial: http://www.tutorialspoint.com/spring/spring_jdbc_example.htm
W tym tutorialu zdefiniować StudentDAO interfejs, który tylko zdefiniować metodę CRUD, że chcę.
Następnie jest zdefiniowana klasa Student, która jest encją, którą chcę zachować w tabeli bazy danych Uczniów.
Następnie definiuje się StudentMapper klasy, która jest specyficzna realizacja RowMapper interfejs, który w tym przypadku jest używany do mapowania konkretny zapis w ResultSet (zwróconego przez kwerendę) do Studenta Obiekt.
Wtedy mam StudentJDBCTemplate że rappresent realizację mojego StudentDAO interfejsu, w tej klasie implementować metody CRUD, który został zdefiniowany w interfejsie.
Ok, a teraz mam wątpliwości, w jaki sposób StudentMapper klasa praca: w tym StudentJDBCTemplate klasie nie definiuje metodę, która zwraca listę wszystkich rekordu, które są w tabeli bazy danych Student, ten jeden:
public List<Student> listStudents() {
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL,
new StudentMapper());
return students;
}
Jak widać, metoda ta zwraca listę obiektów Student i pracy w następujący sposób:
pierwszą rzeczą, że można zrobić, jest zdefiniowanie kwerendy zwrócić wszystkie rekord w St. Udent tabela bazy danych w ciągu SQL.
Potem ta kwerenda jest wykonywana przez wywołanie metody zapytań na obiekcie jdbcTemplateObject (czyli istance z JdbcTemplate wiosennej klasy **
Metoda ta ma dwa parametry: SQL String (zawierający zapytania SQL które muszą zostać wykonane) oraz nowy StudentMapper obiekt, który podejmują ResultSet obiektu zwróconego przez kwerendę i map jest to rekord na nowym obiekcie Student
Czytając tutaj: http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html Sayas że: Ex ecute zapytanie podane static SQL, mapowanie każdego wiersza do obiektu Java za pomocą RowMapper.
Moje wątpliwości związane jest z faktem, że moja StudentMapper mapy rekordu ResultSet na obiekcie Student używając mapRow() metody, jest to kod:
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;
}
}
Więc, którzy nazywają to metoda mapRow? jest automatycznie nazywany przez Spring Framework? (ponieważ w tym przykładzie nigdy nie jest wywoływana ręcznie ...)
Tnx
Andrea
Potem ta kwerenda jest wykonywana przez wywołanie metody zapytań na obiekcie jdbcTemplateObject (czyli istance z JdbcTemplate wiosennej klasy **