iBATIS - Créer une opération

Pour effectuer toute opération de création, lecture, mise à jour et suppression (CRUD) à l'aide d'iBATIS, vous devez créer une classe POJO (Plain Old Java Objects) correspondant à la table. Cette classe décrit les objets qui «modéliseront» les lignes de table de base de données.

La classe POJO aurait une implémentation pour toutes les méthodes requises pour effectuer les opérations souhaitées.

Supposons que nous ayons la table EMPLOYEE suivante dans MySQL -

CREATE TABLE EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

Classe POJO des employés

Nous créerions une classe Employee dans le fichier Employee.java comme suit -

public class Employee {
   private int id;
   private String first_name; 
   private String last_name;   
   private int salary;  

   /* Define constructors for the Employee class. */
   public Employee() {}
  
   public Employee(String fname, String lname, int salary) {
      this.first_name = fname;
      this.last_name = lname;
      this.salary = salary;
   }
} /* End of Employee */

Vous pouvez définir des méthodes pour définir des champs individuels dans la table. Le chapitre suivant explique comment obtenir les valeurs de champs individuels.

Fichier Employee.xml

Pour définir l'instruction de mappage SQL en utilisant iBATIS, nous utiliserions la balise <insert> et à l'intérieur de cette définition de balise, nous définirions un "id" qui sera utilisé dans le fichier IbatisInsert.java pour exécuter la requête SQL INSERT sur la base de données.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="Employee"> 

   <insert id="insert" parameterClass="Employee">
      insert into EMPLOYEE(first_name, last_name, salary)
      values (#first_name#, #last_name#, #salary#)

      <selectKey resultClass="int" keyProperty="id">
         select last_insert_id() as id
      </selectKey>
   </insert> 

</sqlMap>

Ici parameterClass −peut prendre une valeur sous forme de chaîne, int, float, double ou tout objet de classe en fonction des exigences. Dans cet exemple, nous passerions l' objet Employee en tant que paramètre lors de l'appel de la méthode insert de la classe SqlMap.

Si votre table de base de données utilise une colonne IDENTITY, AUTO_INCREMENT ou SERIAL ou si vous avez défini une SEQUENCE / GENERATOR, vous pouvez utiliser l'élément <selectKey> dans une instruction <insert> pour utiliser ou renvoyer cette valeur générée par la base de données.

Fichier IbatisInsert.java

Ce fichier aurait une logique au niveau de l'application pour insérer des enregistrements dans la table Employee -

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class IbatisInsert{
   public static void main(String[] args)throws IOException,SQLException{
      Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
      SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);

      /* This would insert one record in Employee table. */
      System.out.println("Going to insert record.....");
      Employee em = new Employee("Zara", "Ali", 5000);

      smc.insert("Employee.insert", em);

      System.out.println("Record Inserted Successfully ");
   }
}

Compilation et exécution

Voici les étapes pour compiler et exécuter le logiciel mentionné ci-dessus. Assurez-vous d'avoir correctement défini PATH et CLASSPATH avant de procéder à la compilation et à l'exécution.

  • Créez Employee.xml comme indiqué ci-dessus.
  • Créez Employee.java comme indiqué ci-dessus et compilez-le.
  • Créez IbatisInsert.java comme indiqué ci-dessus et compilez-le.
  • Exécutez le binaire IbatisInsert pour exécuter le programme.

Vous obtiendrez le résultat suivant et un enregistrement serait créé dans la table EMPLOYEE.

$java IbatisInsert
Going to insert record.....
Record Inserted Successfully

Si vous vérifiez le tableau EMPLOYÉ, il devrait afficher le résultat suivant -

mysql> select * from EMPLOYEE;
+----+------------+-----------+--------+
| id | first_name | last_name | salary |
+----+------------+-----------+--------+
|  1 | Zara       | Ali       |   5000 |
+----+------------+-----------+--------+
1 row in set (0.00 sec)