Interface PreparedStatementSetter

le org.springframework.jdbc.core.PreparedStatementSetterinterface agit comme une interface de rappel générale utilisée par la classe JdbcTemplate. Cette interface définit des valeurs sur un PreparedStatement fourni par la classe JdbcTemplate, pour chacune d'un certain nombre de mises à jour dans un lot en utilisant le même SQL.

Les implémentations sont responsables de la définition des paramètres nécessaires. Le SQL avec des espaces réservés aura déjà été fourni. Il est plus facile d'utiliser cette interface que PreparedStatementCreator. Le JdbcTemplate créera le PreparedStatement, le rappel étant uniquement responsable de la définition des valeurs des paramètres.

Déclaration d'interface

Voici la déclaration de l'interface org.springframework.jdbc.core.PreparedStatementSetter -

public interface PreparedStatementSetter

Usage

Step 1 - Créez un objet JdbcTemplate à l'aide d'une source de données configurée.

Step 2 - Utilisez les méthodes d'objet JdbcTemplate pour effectuer des opérations de base de données tout en passant l'objet PreparedStatementSetter pour remplacer les espaces réservés dans la requête.

Exemple

L'exemple suivant montre comment lire une requête à l'aide de la classe JdbcTemplate et de l'interface PreparedStatementSetter. Nous lirons l'enregistrement disponible d'un étudiant dans la table des étudiants.

Syntaxe

final String SQL = "select * from Student where id = ? ";
List <Student> students = jdbcTemplateObject.query(
   SQL, new PreparedStatementSetter() {
   
   public void setValues(PreparedStatement preparedStatement) throws SQLException {
      preparedStatement.setInt(1, id);
   }
},
new StudentMapper());

Où,

  • SQL - Sélectionnez la requête pour lire les étudiants.

  • jdbcTemplateObject - Objet StudentJDBCTemplate pour lire l'objet étudiant à partir de la base de données.

  • PreparedStatementSetter - Objet PreparedStatementSetter pour définir les paramètres dans la requête.

  • StudentMapper - StudentMapper est un objet RowMapper pour mapper chaque enregistrement récupéré à un objet étudiant.

Pour comprendre les concepts mentionnés ci-dessus liés à Spring JDBC, écrivons un exemple qui sélectionnera une requête. Pour écrire notre exemple, mettons en place un IDE Eclipse fonctionnel et utilisez les étapes suivantes pour créer une application Spring.

Étape La description
1 Mettez à jour le projet Student créé dans le chapitre Spring JDBC - First Application .
2 Mettez à jour la configuration du bean et exécutez l'application comme expliqué ci-dessous.

Voici le contenu du fichier d'interface de l'objet d'accès aux données StudentDAO.java.

package com.tutorialspoint;

import java.util.List;
import javax.sql.DataSource;

public interface StudentDAO {
   /** 
      * This is the method to be used to initialize
      * database resources ie. connection.
   */
   public void setDataSource(DataSource ds);
   
   /** 
      * This is the method to be used to list down
      * a record from the Student table corresponding
      * to a passed student id.
   */
   public Student getStudent(Integer id);
}

Voici le contenu de la Student.java fichier.

package com.tutorialspoint;

public class Student {
   private Integer age;
   private String name;
   private Integer id;

   public void setAge(Integer age) {
      this.age = age;
   }
   public Integer getAge() {
      return age;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public Integer getId() {
      return id;
   }
}

Voici le contenu de la StudentMapper.java fichier.

package com.tutorialspoint;

import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setId(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

Voici le fichier de classe d'implémentation StudentJDBCTemplate.java pour l'interface DAO StudentDAO définie.

package com.tutorialspoint;

import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;

public class StudentJDBCTemplate implements StudentDAO {
   private DataSource dataSource;
   private JdbcTemplate jdbcTemplateObject;
   
   public void setDataSource(DataSource dataSource) {
      this.dataSource = dataSource;
      this.jdbcTemplateObject = new JdbcTemplate(dataSource);
   }
   public Student getStudent(final Integer id) {
      final String SQL = "select * from Student where id = ? ";
      List <Student> students = jdbcTemplateObject.query(
         SQL, new PreparedStatementSetter() {
		   
         public void setValues(PreparedStatement preparedStatement) throws SQLException {
            preparedStatement.setInt(1, id);
         }
      },
      new StudentMapper());
      return students.get(0);
   }
}

Voici le contenu de la MainApp.java fichier.

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
      StudentJDBCTemplate studentJDBCTemplate = 
         (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");
      
      Student student = studentJDBCTemplate.getStudent(1);
      System.out.print("ID : " + student.getId() );
      System.out.println(", Age : " + student.getAge()); 
   }
}

Voici le fichier de configuration Beans.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">

   <!-- Initialization for data source -->
   <bean id = "dataSource" 
      class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name = "driverClassName" value = "com.mysql.jdbc.Driver"/>
      <property name = "url" value = "jdbc:mysql://localhost:3306/TEST"/>
      <property name = "username" value = "root"/>
      <property name = "password" value = "admin"/>
   </bean>

   <!-- Definition for studentJDBCTemplate bean -->
   <bean id = "studentJDBCTemplate" 
      class = "com.tutorialspoint.StudentJDBCTemplate">
      <property name = "dataSource" ref = "dataSource" />    
   </bean>
      
</beans>

Une fois que vous avez terminé de créer les fichiers de configuration source et bean, laissez-nous exécuter l'application. Si tout va bien avec votre application, elle imprimera le message suivant.

ID : 1, Age : 17