iBATIS - Opération de lecture

Nous avons discuté, dans le dernier chapitre, de la manière d'exécuter l'opération CREATE sur une table à l'aide d'iBATIS. Ce chapitre explique comment lire un tableau à l'aide d'iBATIS.

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

Cette table n'a qu'un seul enregistrement comme suit -

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

Classe POJO des employés

Pour effectuer une opération de lecture, nous modifierons la classe Employee dans 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;
   }

   /* Here are the method definitions */
   public int getId() {
      return id;
   }
	
   public String getFirstName() {
      return first_name;
   }
	
   public String getLastName() {
      return last_name;
   }
	
   public int getSalary() {
      return salary;
   }
	
} /* End of Employee */

Fichier Employee.xml

Pour définir l'instruction de mappage SQL en utilisant iBATIS, nous ajouterions la balise <select> dans le fichier Employee.xml et à l'intérieur de cette définition de balise, nous définirions un "id" qui sera utilisé dans le fichier IbatisRead.java pour exécuter la requête SQL SELECT 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>
	
   <select id="getAll" resultClass="Employee">
      SELECT * FROM EMPLOYEE
   </select>
	
</sqlMap>

Ici, nous n'avons pas utilisé la clause WHERE avec l'instruction SQL SELECT. Nous montrerons, dans le chapitre suivant, comment vous pouvez utiliser la clause WHERE avec l'instruction SELECT et comment vous pouvez passer des valeurs à cette clause WHERE.

Fichier IbatisRead.java

Ce fichier a une logique au niveau de l'application pour lire les enregistrements de 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 IbatisRead{
   public static void main(String[] args)throws IOException,SQLException{
      Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
      SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);

      /* This would read all records from the Employee table. */
      System.out.println("Going to read records.....");
      List <Employee> ems = (List<Employee>)
         smc.queryForList("Employee.getAll", null);
      Employee em = null;
		
      for (Employee e : ems) {
         System.out.print("  " + e.getId());
         System.out.print("  " + e.getFirstName());
         System.out.print("  " + e.getLastName());
         System.out.print("  " + e.getSalary());
         em = e; 
         System.out.println("");
      }    
		
      System.out.println("Records Read 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 IbatisRead.java comme indiqué ci-dessus et compilez-le.
  • Exécutez le binaire IbatisRead pour exécuter le programme.

Vous obtiendrez le résultat suivant et un enregistrement serait lu à partir de la table EMPLOYEE comme suit -

Going to read records.....
   1  Zara  Ali  5000
Record Reads Successfully