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