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.
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:
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: