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

exemplo de PreparedStatement no Spring JdbcTemplate

usando a classe execute()métodos, podemos usar o Spring JdbcTemplate para executar consultas parametrizadas. Para usar consultas parametrizadas, passamos PreparedStatementCallback uma instância.

A sintaxe do método execute para usar consultas parametrizadas

public T execute(String sql,PreparedStatementCallback<T>);

interface PreparedStatementCallback

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 PreparedStatementCallback

Ele tem apenas um método doInPreparedStatement. A sintaxe desse método é a seguinte:

public T doInPreparedStatement(PreparedStatement ps)throws SQLException, DataAccessException

Exemplo de uso de PreparedStatement no Spring

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));
}
}