English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
public T query(String sql, ResultSetExtractor<T> rse)
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.
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
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); } }