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

Esempio di SimpleJdbcTemplate di Spring

Spring 3 JDBC supporta le funzionalità Java 5 var-args (parametri variabili) e auto-boxing con l'aiuto della classe SimpleJdbcTemplate.

La classe SimpleJdbcTemplate impacchetta la classe JdbcTemplate e fornisce un metodo update nel quale possiamo passare un numero variabile di parametri.

Sintassi del metodo update della classe SimpleJdbcTemplate

int update(String sql,Object... parametri)

Dovremmo passare i valori dei parametri nell'ordine definito nella query parametrizzata nel metodo di aggiornamento.


Esempio di SimpleJdbcTemplate

Supponiamo che tu abbia già creato la seguente tabella nel database Oracle10g.

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

Employee.java

Questa classe contiene 3 attributi con costruttore, setter e getter.

package com.w3codebox;
public class Employee {
private int id;
private String name;
private float salary;
//no-arg and parameterized constructors
//getters and setters
}

EmployeeDao.java

Contiene un attributo SimpleJdbcTemplate e un metodo aggiornamento. In questo caso, il metodo aggiornamento aggiornerrà solo il nome corrispondente all'ID. Se si desidera aggiornare contemporaneamente nome e stipendio, commentare le due righe superiori del metodo aggiornamento e uncommentare le due righe fornite di seguito.

package com.w3codebox;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
public class EmpDao {
SimpleJdbcTemplate template;
public EmpDao(SimpleJdbcTemplate template) {
        this.template = template;
}
public int update (Emp e){
String query="update employee set name=? where id=?";
return template.update(query, e.getName(), e.getId());
//String query="update employee set name=?,salary=? where id=?";
//return template.update(query, e.getName(), e.getSalary(), e.getId());
}
}

applicationContext.xml

DriverManagerDataSource utilizzato per contenere informazioni sulla base di dati, come il nome della classe del driver, l'URL di connessione, il nome utente e la password.

Nella classe SimpleJdbcTemplate di tipo DriverManagerDataSource c'è un metodo chiamato datasource proprietà. Pertanto, dobbiamo fornire un riferimento all'oggetto DriverManagerDataSource per l'attributo DataSource della classe SimpleJdbcTemplate.

Qui, nell'oggetto SimpleJdbcTemplate della classe EmployeeDao, utilizziamo l'oggetto, quindi lo passiamo al costruttore, ma puoi anche usarne il metodo setter.

<?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="jtemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<constructor-arg ref="ds"></constructor-arg>
</bean>
<bean id="edao" class="com.w3codebox.EmpDao">
<constructor-arg>
<ref bean="jtemplate"/>
</constructor-arg>
</bean>
</beans>

SimpleTest.java

Questo recupera i Bean dal file applicationContext.xml e chiama il metodo aggiornamento della classe EmpDao.

package com.w3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class SimpleTest {
public static void main(String[] args) {
    Resource r=new ClassPathResource("applicationContext.xml");
    BeanFactory factory=new XmlBeanFactory(r);
    EmpDao dao=(EmpDao)factory.getBean("edao");
    int status=dao.update(new Emp(23,"Tarun",35000));
    System.out.println(status);
}
}