Cómo utilizar ResultSetExtractor
para recuperar datos de la base de datos? aquí estoy usando Oracle 10g como back-end. En caso de buscar los datos del empleado en la tabla de empleados, ¿cuál es mejor usar ResultSetExtractor
o RowMapper
?Spring ResultSetExtractor
5
A
Respuesta
2
Hay un buen artículo sobre JDBC primavera, check this
siguiente es el ejemplo de uso:
clase PersonResultSetExtractor:
package dao.mapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.ResultSetExtractor;
import domainmodel.Person;
public class PersonResultSetExtractor implements ResultSetExtractor {
@Override
public Object extractData(ResultSet rs) throws SQLException {
Person person = new Person();
person.setFirstName(rs.getString(1));
person.setLastName(rs.getString(2));
return person;
}
}
RowMapper:
package dao.mapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
public class PersonRowMapper implements RowMapper {
@Override
public Object mapRow(ResultSet rs, int line) throws SQLException {
PersonResultSetExtractor extractor = new PersonResultSetExtractor();
return extractor.extractData(rs);
}
}
0
Un ejemplo más sencillo:
MyDataStructure result = jdbcTemplate.query(sql, new ResultSetExtractor<MyDataStructure>() {
@Override
public MyDataStructure extractData(final ResultSet rs) throws ... {
// collect data from rs here ...
return myData;
}
});
0
Uno puede también utilizar cierres (lambdas) como rutina de mapeo consecutivas desde java 8:
String sql = "select first_name, last_name from PERSON where id = ?";
public Person jdbcTemplate.query(sql,(rs)->{return new Person(rs.getString("first_name"), rs.getString("last_name"));}, int id);
primer parámetro método es la consulta, segundos - (String, String) Se necesita persona constructor - el asignador . "first_name", "last_name" son los nombres de la columna db. Tercero: el argumento para la identificación, es una vararg donde puedes poner más params.
Cuestiones relacionadas
- 1. Problema de rendimiento con getInt dentro de ResultSetExtractor
- 2. ¿cuál es la diferencia entre ResultSetExtractor vs Rowmapper?
- 3. Anotaciones de Spring Spring @RequestMapping
- 4. ¿Puedo usar Spring Social con Spring Security?
- 5. Spring Prototype Beans y beneficios de Spring
- 6. ¿Se puede usar Spring-WS 1.5 con Spring 3?
- 7. ¿Cómo se compara Spring para Python con Spring para Java?
- 8. Buscando un tutorial de OSGi con Spring (específicamente Spring MVC)
- 9. Spring MVC: Diferencia entre spring: bind y form: formulario
- 10. Spring Security, Spring MVC y Sesiones de inicio de sesión
- 11. Desventajas del uso de Stripes + Spring vs Spring MVC
- 12. Spring Hibernate Vs jdbc template vs spring orm
- 13. Spring @Transactional v Spring Security @ Comportamiento incoherente segmentado
- 14. ¿Cuándo tiene sentido usar Spring WebFlow sobre Spring MVC?
- 15. Deshabilitar Spring Security desde el archivo spring-security.xml
- 16. Spring vs EJB. ¿Puede Spring reemplazar a EJB?
- 17. spring-webmvc.jar no viene con Spring Framework 3.0.5 descarga
- 18. Spring 3.1 MVC, Spring Security 3.1 - CSRF token
- 19. hibernate-envers RevisionListener spring integration as spring bean
- 20. Uso de Spring Validator fuera del contexto de Spring MVC
- 21. Inicializando Log4J con Spring?
- 22. Cláusula Spring Like
- 23. spring @ Anotación de Transactional
- 24. Spring WS DefaultWsdl11Definition Error
- 25. Spring + Hibernate + JPA
- 26. Spring + Load balanceing/Clustering
- 27. ¿Spring Support JSON Configuration?
- 28. Spring MVC Plugin Architecture
- 29. Interceptor mvc Spring addObject
- 30. Spring Hibernate maven POM
gracias por su respuesta. Es bastante útil. –
También encuentro una forma más utilizando solo 'ResultSetExtractor'. El código está aquí –
No olvide llamar a rs.next(), porque el cursor está inicialmente posicionado antes de la primera fila. –