Insertion d'un enregistrement dans une table

Cet exemple vous explique comment vous pouvez utiliser pureQuery pour insérer un enregistrement pour un nouvel employé dans une table d'enregistrements d'employés.

Définition de la table de base de données et du bean correspondant

Cet exemple utilise la définition simple suivante d'une table appelée HRDEPT.EMPLOYEE.

CREATE TABLE HRDEPT.EMPLOYEE(
  EMPNO CHAR(6) NOT NULL,
  FIRSTNME VARCHAR(12) NOT NULL,
  MIDINIT CHAR(1), 
  LASTNAME VARCHAR(15), 
  WORKDEPT CHAR(2), 
  PHONENO CHAR(4),
  HIREDATE DATE, 
  PRIMARY KEY(EMPNO))

Un bean correspondant à cette table peut se présenter comme suit.

public Employee {
    public String employeeId;
    public String firstName;
    public String middleInitial;
    public String lastName;
    public String departmentId;
    public String extension;
    public Date hireDate;
 }

Les instances de ce bean indiquent les valeurs contenues dans les enregistrements que le code d'exemple insère dans la table HRDEPT.EMPLOYEE. Lorsque vous utilisez des beans pour fournir des paramètres d'entrée aux instructions SQL, les marqueurs de paramètres des instructions SQL indiquent à la requête pureQuery quelle propriété de bean fournit la valeur de chaque paramètre dans l'instruction SQL. C'est pourquoi, même si les noms des propriétés du bean et les colonnes de la table ne correspondent pas, la définition du bean n'a pas besoin de contenir d'annotation @Column. Si la requête pureQuery a créé les instances de ce bean pour stocker les résultats des requêtes, la définition du bean requiert l'annotation @Column pour chaque propriété.

Style de programmation de méthode annotée

Lorsque vous utilisez des méthodes annotées pour manipuler un objet de base de données, vous devez définir une interface définissant ces méthodes, utiliser le générateur pureQuery pour générer une implémentation de cette interface, puis écrire une application appelant les méthodes se trouvant dans la classe d'implémentation.

L'interface dans laquelle vous définissez la méthode annotée pour insérer un enregistrement peut se présenter comme suit :

import com.company.Employee;
public interface HumanResources 
{
 @Update(sql=
  "INSERT INTO HRDept.Employee(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE)" +
  "VALUES( :employeeId, :firstName, :middleInitial, :lastName, :departmentId, :extension, :hireDate)",
  int newEmployee( Employee newHire );
}

L'interface définit une méthode appelée newEmployee() comme renvoyant une valeur int, représentant le nombre de mises à jour d'une instruction SQL et comme utilisant l'objet Employee unique, newHire.

L'annotation @Update de l'interface indique à l'instruction SQL de fonctionner lorsque la méthode newEmployee() est appelée.

Une fois que vous avez généré une implémentation d'interface HumanResources, vous pouvez l'utiliser dans une application comme suit :

Connection con = DriverManager.getConnection(...);            1 
HumanResources hr =                                           2 
          DataFactory.getData( HumanResources.class, con );

Employee newCollegeHire =                                     3 
   new Employee("000010", "CHRISTINE", "I", "HAAS", "A00", 
      "3978", new java.sql.Date(System.currentTimeMillis()));

int oneCount = hr.newEmployee(newCollegeHire);                4 

Le code exécute les étapes suivantes :

  1. Création d'une connexion à la base de données.
  2. Création d'une instance de l'implémentation de l'interface HumanResources.
  3. Création d'un objet Employee et affectation à la variable de référence newCollegeHire.
  4. Appel de la méthode newEmployee() qui exécute l'instruction SQL INSERT et renvoie le nombre de mises à jour dans la variable entière oneCount.

Style de programmation intégrée

Si vous souhaitez que l'instruction INSERT soit visible dans la source de l'application, vous pouvez utiliser le style de programmation intégrée.

Dans votre application, vous appelez une version de la méthode update() surchargée définie dans une implémentation de l'interface Data.

Votre application peut se présenter comme suit :

Connection con = DriverManager.getConnection(...);    1 
Data db = DataFactory.getData(con);                   2 

Employee newCollegeHire =                             3 
   new Employee("000010", "CHRISTINE", "I", "HAAS", "A00", 
      "3978", new java.sql.Date(System.currentTimeMillis()));

int oneCount = db.update(                             4 
 "INSERT INTO HRDept.Employee(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE) " +
 "VALUES(:employeeId, :firstName, :middleInitial, :lastName, :departmentId, :extension, :hireDate )", 
 newCollegeHire );

Le code exécute les étapes suivantes :

  1. Création d'une connexion à la base de données.
  2. Création d'une instance de l'implémentation de l'interface Data.
  3. Création d'un objet Employee et affectation à la variable de référence newCollegeHire.
  4. Appel de la méthode db.update() en passant par l'instruction INSERT et l'objet Employee qui contient les valeurs du nouvel enregistrement et en renvoyant le nombre de mises à jour dans la variable entière oneCount.

Commentaires