English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exemple ResultSetExtractor|Obtenir des enregistrements avec Spring JdbcTemplate

Nous pouvons utiliser JdbcTemplate de la classe query()La méthode récupère facilement les enregistrements de la base de données, nous devons passer une instance de ResultSetExtractor.

Syntaxe de la méthode de recherche utilisant ResultSetExtractor

public T query(String sql, ResultSetExtractor<T> rse)

Interface ResultSetExtractor

ResultSetExtractor L'interface peut être utilisée pour obtenir des enregistrements de la base de données. Elle accepte un ResultSet et retourne une liste.

Méthodes de l'interface ResultSetExtractor

Il ne définit qu'une méthode qui accepte une instance de ResultSet en tant que paramètre. La syntaxe de la méthode est la suivante:

public T extractData(ResultSet rs) throws SQLException, DataAccessException

Exemple d'interface ResultSetExtractor pour afficher tous les enregistrements de la table

Nous supposons que vous avez déjà 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

Ce type contient3Un attribut avec constructeur, setter et getter. Il définit 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 propriétés jdbcTemplate et une méthode getAllEmployees.

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;
public class EmployeeDao {
private JdbcTemplate template;
public void setTemplate(JdbcTemplate template) {
    this.template = template;
}
public List<Employee> getAllEmployees(){
 return template.query("select * from employee",new ResultSetExtractor<List<Employee>>(){
    @Override
     public List<Employee> extractData(ResultSet rs) throws SQLException,
            DataAccessException {
        List<Employee> list=new ArrayList<Employee>();
        while(rs.next()){
        Employee e=new Employee();
        e.setId(rs.getInt(1));
        e.setName(rs.getString(2));
        e.setSalary(rs.getInt(3));
        list.add(e);
        }
        return list;
        }
    });
  }
}

applicationContext.xml

DriverManagerDataSource utilisé pour inclure 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 Data Source dans la classe JdbcTemplate.

Ici, nous utilisons l'objet JdbcTemplate dans la classe EmployeeDao, donc nous le transmettons via 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 des Beans à partir du fichier applicationContext.xml et appelle la méthode getAllEmployees() 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.getAllEmployees();
    for(Employee e:list)
        System.out.println(e);
    }
}