Sto studiando come eseguire query su un database utilizzando JDBC in Spring Framework.Alcuni dubbi sull'uso di RowMapper in JDBC in un'applicazione Spring Framework
Sto seguendo questo tutorial: http://www.tutorialspoint.com/spring/spring_jdbc_example.htm
In questo tutorial definisco un StudentDAO interfaccia che definiscono solo il metodo CRUD che voglio.
Quindi è definita la classe Student che è l'entità che si desidera mantenere sulla tabella del database Studente.
Poi è definito il StudentMapper classe che è una specifica implementazione di RowMapper interfaccia che, in questo caso, viene utilizzato per mappare un record specifico nel ResultSet (restituito da una query) per un Studente oggetto.
allora ho il StudentJDBCTemplate che rappresentano l'implementazione della mia StudentDAO interfaccia , in questa classe a implementare il metodo CRUD che è stato definito nell'interfaccia.
Ok, e ora ho un dubbio su come il StudentMapper lavoro classe: in questo StudentJDBCTemplate classe ci viene definito il metodo che restituisce la lista di tutti i record che sono nella tabella del database Student, questo:
public List<Student> listStudents() {
String SQL = "select * from Student";
List <Student> students = jdbcTemplateObject.query(SQL,
new StudentMapper());
return students;
}
Come si può vedere, questo metodo restituisce un elenco di oggetti Student e il lavoro nel modo seguente:
la prima cosa che fanno è quello di definire la query che tornare tutto record nel St tabella database udent nella stringa SQL.
Poi questa ricerca viene eseguita dalla chiamata metodo di query sull'oggetto jdbcTemplateObject (cioè un'istanza di JdbcTemplate classe Spring **
Questo metodo prende due parametri: la stringa SQL (che contiene la query SQL che devono essere eseguite) e un nuovo StudentMapper oggetto che prende la ResultSet oggetto restituito dalla query e la mappa è record su un nuovo oggetto Student
Leggendo qua: http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html Sayas che: Ex ecuta una query con SQL statico, mappando ogni riga su un oggetto Java tramite RowMapper.
Il mio dubbio è legato al fatto che il mio StudentMapper mappa un record ResultSet su un oggetto Gli studenti, utilizzando il mapRow() metodo, questo è il codice:
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;
}
}
Quindi, che chiamano questo metodo mapRow? si chiama automaticamente dal Framework di primavera? (perché in questo esempio non viene mai chiamato manualmente ...)
Tnx
Andrea
Allora questa query viene eseguita dalla chiamata al metodo di query sull'oggetto jdbcTemplateObject (che è un istanza di JdbcTemplate classe Primavera **