Datensatz in eine Tabelle einfügen

Dieses Beispiel zeigt, wie Sie mithilfe von pureQuery einen Datensatz für einen neuen Mitarbeiter in eine Tabelle mit Mitarbeiterdatensätzen einfügen können.

Definition der Datenbanktabelle und der entsprechenden Bean

In diesem Beispiel wird die folgende einfache Definition einer Tabelle mit dem Namen HRDEPT.EMPLOYEE verwendet.

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

Eine Bean, die dieser Tabelle entspricht, könnte wie folgt aussehen:

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

Von Instanzen dieser Bean werden die Werte in den Datensätzen bereitgestellt, die durch den Beispielcode in die Tabelle HRDEPT.EMPLOYEE eingefügt werden. Wenn Sie Beans verwenden, um Eingabeparameter für SQL-Anweisungen bereitzustellen, informieren die Parametermarken in den SQL-Anweisungen pureQuery darüber, welche Bean-Eigenschaft den Wert jedes Parameters in der SQL bereitstellt. Auch wenn die Namen der Eigenschaften in der Bean und die Spalten in der Tabelle nicht übereinstimmen, muss die Definition der Bean demzufolge keine @Column-Annotationen enthalten. Falls von pureQuery Instanzen dieser Bean zum Speichern der Ergebnisse von Abfragen erstellt wurden, erfordert die Definition der Bean die Annotation @Column für jede Eigenschaft.

Programmierstil mit Annotationsmethode

Wenn Sie mit Annotationen versehene Methoden zum Manipulieren eines Datenbankobjekts verwenden, müssen Sie eine Schnittstelle definieren, die diese Methoden definiert. Verwenden Sie das pureQuery-Dienstprogramm 'Generator', um eine Implementierung dieser Schnittstelle zu generieren und schreiben Sie anschließend eine Anwendung, die die in der Implementierungsklasse enthaltenen Methoden aufruft.

Die Schnittstelle, in der Sie die mit Annotationen versehene Methode zum Einfügen eines Datensatzes definieren, könnte wie folgt aussehen:

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

Die Schnittstelle definiert eine Methode mit dem Namen newEmployee(), die ein int zurückgibt, das den Aktualisierungszähler der SQL-Anweisung darstellt, und das einzelne Employee-Objekt, newHire, verwendet.

Die Annotation @Update der Schnittstelle stellt die SQL-Anweisung bereit, die ausgeführt werden soll, wenn die Methode newEmployee() aufgerufen wird.

Nach Generieren einer Implementierung der Schnittstelle HumanResources können Sie sie in einer Anwendung wie der folgenden verwenden:

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 

Der Code führt die folgenden Schritte aus:

  1. Stellt eine Verbindung zur Datenbank her.
  2. Erstellt eine Instanz der Implementierung der Schnittstelle HumanResources.
  3. Erstellt ein neues Objekt Employee und ordnet es der Referenzvariablen newCollegeHire zu.
  4. Ruft die Methode newEmployee() auf, durch die die SQL-Anweisung INSERT ausgeführt und der Aktualisierungszähler in der Integervariablen oneCount zurückgegeben wird.

Integrierter Programmierstil

Wenn Sie wollen, dass die Anweisung INSERT im Quellcode der Anwendung sichtbar ist, können Sie den integrierten Programmierstil verwenden.

Dazu würden Sie in der Anwendung eine Version der überladenen Methode update() aufrufen, die in einer Implementierung der Schnittstelle Data definiert ist.

Ihre Abfrage könnte wie folgt aussehen:

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

Der Code führt die folgenden Schritte aus:

  1. Stellt eine Verbindung zur Datenbank her.
  2. Erstellt eine Instanz der Implementierung der Schnittstelle Data.
  3. Erstellt ein neues Objekt Employee und ordnet es der Referenzvariablen newCollegeHire zu.
  4. Ruft die Methode db.update() auf, übergibt die Anweisung INSERT und das Objekt Employee, das die Werte für den neuen Datensatz enthält, und gibt den Aktualisierungszähler in der Integervariablen oneCount zurück.

Feedback