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

Spring SimpleJdbcTemplate示例

Spring 3 JDBC在SimpleJdbcTemplate类的帮助下支持Java 5功能var-args(可变参数)和自动装箱。

SimpleJdbcTemplate类包装了JdbcTemplate类,并提供了可在其中传递任意数量参数的update方法。

SimpleJdbcTemplate类的update方法的语法

int update(String sql,Object... 参数)

我们应该按照在参数化查询中定义的顺序在更新方法中传递参数值。


SimpleJdbcTemplate类的示例

我们假设您已经在Oracle10g数据库中创建了下表。

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

Employee.java

Ce classe contient3une propriété avec constructeur, setter et 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

Il contient une propriété SimpleJdbcTemplate et une méthode de mise à jour. Dans ce cas, la méthode update ne mettra à jour que le nom correspondant à l'ID. Si vous souhaitez mettre à jour à la fois le nom et le salaire, commentez les deux lignes de code du dessus de la méthode update et décommentez les deux lignes de code suivantes.

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 Utilisée 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.

La classe SimpleJdbcTemplate de type DriverManagerDataSource contient une méthode nommée datasource propriétés. Par conséquent, nous devons fournir une référence à l'objet DriverManagerDataSource pour la propriété du réservoir de données dans la classe SimpleJdbcTemplate.

Dans ce cas, nous utilisons l'objet SimpleJdbcTemplate dans la classe EmployeeDao, donc nous le transmettons par le constructeur, mais vous pouvez également utiliser la méthode 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

Ce type récupère le Bean à partir du fichier applicationContext.xml et appelle la méthode de mise à jour de la 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);
}
}