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

Exemple de PreparedStatement dans Spring JdbcTemplate

grâce à la classe JdbcTemplate execute()méthode, nous pouvons utiliser Spring JdbcTemplate pour exécuter une requête paramétrée. Pour utiliser une requête paramétrée, nous passons PreparedStatementCallback une instance.

La syntaxe de la méthode execute pour utiliser une requête paramétrée

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

interface PreparedStatementCallback

elle traite les paramètres d'entrée et les résultats de sortie. Dans ce cas, vous n'avez pas besoin de vous soucier des guillemets simple et double.

méthode de l'interface PreparedStatementCallback

Il n'a qu'une seule méthode doInPreparedStatement. La syntaxe de cette méthode est la suivante:

public T doInPreparedStatement(PreparedStatement ps)throws SQLException, DataAccessException

Exemple d'utilisation de PreparedStatement dans Spring

Nous supposons que vous avez déjà configuré Oracle10le tableau suivant a été créé dans la base de données g.

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

Employee.java

Cette classe contient3un attribut 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é jdbcTemplate et une méthode saveEmployeeByPreparedStatement. Vous devez comprendre le concept de classe anonyme pour comprendre le code de cette méthode.

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 Utilisé 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 JdbcTemplate de type DriverManagerDataSource possède un nom datasource Les propriétés. Par conséquent, nous devons fournir une référence à l'objet DriverManagerDataSource pour la propriété de la source de données dans la classe JdbcTemplate.

Ici, nous utilisons l'objet JdbcTemplate dans la classe EmployeeDao, donc nous le passons par la méthode setter, mais vous pouvez également utiliser le constructeur.

<?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

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