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

ResultSetExtractor-Beispiel | Aufzeichnungen abrufen, die durch Spring JdbcTemplate gewonnen wurden

Wir können JdbcTemplate der Klasse query()Das Verfahren, um Daten aus der Datenbank abzurufen, ist einfach. Wir müssen eine Instanz von ResultSetExtractor übergeben.

Syntax des Abfrageverfahrens mit ResultSetExtractor

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

ResultSetExtractor-Interface

ResultSetExtractor Das Interface kann verwendet werden, um Daten aus der Datenbank abzurufen. Es akzeptiert ein ResultSet und gibt eine Liste zurück.

Methode des ResultSetExtractor-Interfaces

Es definiert nur eine Methode, die eine ResultResult-Instanz als Parameter akzeptiert. Die Syntax der Methode ist wie folgt:

public T extractData(ResultSet rs) throws SQLException, DataAccessException

Ein Beispiel für den ResultSetExtractor-Interface, um alle Zeilen der Tabelle anzuzeigen

Wir gehen davon aus, dass Sie bereits in Oracle10Im Datenbank-Management-System g wurden folgende Tabellen erstellt.

create table employee(
id number(10)
name varchar2(100),
salary number(10)
);

Employee.java

Dieses Klasse enthält3eine mit Konstruktor, Setter und Getter bestückte Eigenschaft. Es definiert eine zusätzliche toString()-Methode.

package com.w3codebox;
public class Employee {
private int id;
private String name;
private float salary;
//nein-Argument und parameterisierte Konstruktoren
//Getter und Setter
public String toString(){
    return id+" "+name+" "+salary;
}
}

EmployeeDao.java

Es enthält die Eigenschaft jdbcTemplate und eine Methode 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 * von 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 zur Aufnahme von Informationen über die Datenbank, z.B. den Namen der Treiberklasse, die Verbindung URL, den Benutzernamen und das Passwort.

In der Klasse JdbcTemplate vom Typ DriverManagerDataSource gibt es eine Methode namens datasource 的属性。因此, wir müssen in der Klasse JdbcTemplate eine Referenz auf das Objekt DriverManagerDataSource für die Datenquellattribute bereitstellen.

Hier verwenden wir das JdbcTemplate-Objekt in der Klasse EmployeeDao, daher übergeben wir es über die Setter-Methode, aber Sie können auch den Konstruktor verwenden.

<?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

Diese Klasse liest Bean aus der Datei applicationContext.xml und ruft die Methode getAllEmployees() der Klasse EmployeeDao auf.

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);
    }
}