English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring 3 JDBC在SimpleJdbcTemplate类的帮助下支持Java 5功能var-args(可变参数)和自动装箱。
SimpleJdbcTemplate类包装了JdbcTemplate类,并提供了可在其中传递任意数量参数的update方法。
int update(String sql,Object... 参数)
我们应该按照在参数化查询中定义的顺序在更新方法中传递参数值。
我们假设您已经在Oracle10g数据库中创建了下表。
create table employee( número de id(10), nombre varchar2(100), número de salario(10) );
Employee.java
Este clase contiene3una propiedad con constructor, setter y getter.
paquete com.w3codebox; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }
EmployeeDao.java
Este contiene una propiedad SimpleJdbcTemplate y un método actualizar. En este caso, el método actualizar solo actualizará el nombre correspondiente al ID. Si se desea actualizar tanto el nombre como el salario, comentar las dos líneas de código anteriores del método actualizar y descomentar las dos líneas siguientes.
paquete 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 usado para contener información sobre la base de datos, como el nombre de la clase del driver, la URL de conexión, el nombre de usuario y la contraseña.
La clase SimpleJdbcTemplate de tipo DriverManagerDataSource tiene un método llamado
datasource
propiedades. Por lo tanto, necesitamos proporcionar una referencia al objeto DriverManagerDataSource para la propiedad de fuente de datos en la clase SimpleJdbcTemplate.
Aquí, utilizamos el objeto SimpleJdbcTemplate en la clase EmployeeDao, por lo que lo pasamos a través del constructor, pero también puede usar el método 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
Este tipo obtiene Bean desde el archivo applicationContext.xml y llama al método de actualización de la clase EmpDao.
paquete 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); } }