English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
usando a classe
execute()
métodos, podemos usar o Spring JdbcTemplate para executar consultas parametrizadas. Para usar consultas parametrizadas, passamos
PreparedStatementCallback
uma instância.
public T execute(String sql,PreparedStatementCallback<T>);
Ele lida com os parâmetros de entrada e os resultados de saída. Neste caso, você não precisa se preocupar com aspas simples e duplas.
métodos da interface PreparedStatementCallbackEle tem apenas um método doInPreparedStatement. A sintaxe desse método é a seguinte:
public T doInPreparedStatement(PreparedStatement ps)throws SQLException, DataAccessException
Nós supomos que você já esteja no Oracle10a tabela foi criada no banco de dados g.
create table employee( número de id(10), nome varchar2(100), número de salário(10) );
Employee.java
Este classe contém3um com construtores, getters e setters.
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
Ele contém uma propriedade jdbcTemplate e um método saveEmployeeByPreparedStatement. Você deve entender o conceito de classe anônima para entender o código do método.
package com.w3codebox; import java.sql.PreparedStatement; import java.sql.SQLException; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCallback; public class EmployeeDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public boolean saveEmployeeByPreparedStatement(final Employee e){ String query="insert into employee values(?,?,?)"; return jdbcTemplate.execute(query,new PreparedStatementCallback<Boolean>(){ @Override public boolean doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException { ps.setInt(1,e.getId()); ps.setString(2,e.getName()); ps.setfloat(3,e.getSalary()); return ps.execute(); } ); } }
applicationContext.xml
DriverManagerDataSource Usado para conter informações sobre o banco de dados, por exemplo, o nome da classe do driver, a URL de conexão, o nome de usuário e a senha.
No JdbcTemplate de tipo DriverManagerDataSource há um nome
datasource
As propriedades. Portanto, precisamos fornecer uma referência ao objeto DriverManagerDataSource para o atributo DataSource na classe JdbcTemplate.
Aqui, usamos o objeto JdbcTemplate na classe EmployeeDao, portanto, passamos por meio do método setter, mas você também pode usar o construtor.
<?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
Este tipo obtém Beans do arquivo applicationContext.xml e chama o método saveEmployeeByPreparedStatement().
package com.w3codebox; 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"); dao.saveEmployeeByPreparedStatement(new Employee(108,"Amit",35000)); } }