English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Comme ResultSetExtractor, nous pouvons utiliser l'interface RowMapper via
JdbcTemplate
de la classe
query()
La méthode récupère les enregistrements de la base de données. Pendant l'exécution, nous devons maintenant passer une instance de RowMapper.
public T query(String sql,RowMapper<T> rm)
RowMapper
L'interface permet d'utiliser des instances de classes utilisateur définies pour mapper les lignes de la relation. Il itère internement ResultSet et les ajoute à un ensemble. Par conséquent, nous n'avons pas besoin d'écrire un grand nombre de code pour obtenir les enregistrements en tant que ResultSetExtractor.
RowMapper peut économiser beaucoup de code, car
Il ne définit qu'une méthode MapRow, qui accepte une instance de ResultSet et un int en tant que liste de paramètres. La syntaxe de cette méthode est la suivante:
public T mapRow(ResultSet rs, int rowNumber)throws SQLException
Nous supposons que vous avez déjà installé Oracle10g a créé les tables suivantes dans la base de données.
create table employee( id number(10) name varchar2(100), salary number(10) );
Employee.java
Cette classe contient3une classe avec un constructeur, des propriétés avec des setters et getters ainsi qu'une méthode toString() supplémentaire.
package com.w3codebox;
public class Employee {
private int id;
private String name;
private float salary;
//no-arg and parameterized constructors
//getters and setters
public String toString(){
return id+" "+name+" "+salary;
}
}
EmployeeDao.java
Il contient les attributs jdbcTemplate et une méthode getAllEmployeesRowMapper.
package com.w3codebox; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowMapper; public class EmployeeDao { private JdbcTemplate template; public void setTemplate(JdbcTemplate template) { this.template = template; } public List<Employee> getAllEmployeesRowMapper(){ return template.query("select * from employee",new RowMapper<Employee>(){ @Override public Employee mapRow(ResultSet rs, int rownumber) throws SQLException { Employee e=new Employee(); e.setId(rs.getInt("1)); e.setName(rs.getString("2)); e.setSalary(rs.getInt("3)); return e; } ); } }
applicationContext.xml
DriverManagerDataSource utilisé pour contenir des informations sur la base de données, telles que le nom de la classe du pilote, l'URL de connexion, le nom d'utilisateur et le mot de passe.
Dans la classe JdbcTemplate de type DriverManagerDataSource, il y a un nom
datasource
Les propriétés. Par conséquent, nous devons fournir une référence à l'objet DriverManagerDataSource pour les propriétés du datasorce dans la classe JdbcTemplate.
Ici, nous utilisons l'objet JdbcTemplate dans la classe EmployeeDao, donc nous le transmettons par le biais de la méthode setter, mais vous pouvez également utiliser le constructeur.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns:p="http://www.springframework.org/schema/p xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> /> <property name="url" value="jdbc:oracle:thin:@localhost:>1521:xe" /> <property name="username" value="system"> /> <property name="password" value="oracle"> /> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="ds"></property> </bean> <bean id="edao" class="com.w3codebox.EmployeeDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans>
Test.java
Cette classe récupère les Beans à partir du fichier applicationContext.xml et appelle la méthode getAllEmployeesRowMapper() de la classe EmployeeDao.
package com.w3codebox; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); EmployeeDao dao=(EmployeeDao)ctx.getBean("edao"); List<Employee> list=dao.getAllEmployeesRowMapper(); for(Employee e:list) System.out.println(e); } }