iBATIS - Update-Vorgang

Im letzten Kapitel haben wir erläutert, wie Sie mit iBATIS eine READ-Operation für eine Tabelle ausführen. In diesem Kapitel wird erläutert, wie Sie Datensätze in einer Tabelle mit iBATIS aktualisieren können.

Wir haben die folgende EMPLOYEE-Tabelle in 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)
);

Diese Tabelle enthält nur einen Datensatz wie folgt:

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

Mitarbeiter POJO Klasse

Um den udpate-Vorgang auszuführen, müssen Sie die Datei Employee.java wie folgt ändern:

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 required method definitions */
   public int getId() {
      return id;
   }
	
   public void setId(int id) {
      this.id = id;
   }
	
   public String getFirstName() {
      return first_name;
   }
	
   public void setFirstName(String fname) {
      this.first_name = fname;
   }
	
   public String getLastName() {
      return last_name;
   }
   public void setlastName(String lname) {
      this.last_name = lname;
   }
	
   public int getSalary() {
      return salary;
   }
	
   public void setSalary(int salary) {
      this.salary = salary;
   }

} /* End of Employee */

Employee.xml-Datei

Um die SQL-Zuordnungsanweisung mit iBATIS zu definieren, fügen wir in Employee.xml das Tag <update> hinzu und definieren innerhalb dieser Tag-Definition eine "id", die in der Datei IbatisUpdate.java zum Ausführen der SQL UPDATE-Abfrage in der Datenbank verwendet wird.

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

   <update id="update" parameterClass="Employee">
      UPDATE EMPLOYEE
      SET    first_name = #first_name#
      WHERE  id = #id#
   </update>
	
</sqlMap>

IbatisUpdate.java-Datei

Diese Datei verfügt über eine Logik auf Anwendungsebene zum Aktualisieren von Datensätzen in der Employee-Tabelle.

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 IbatisUpdate{
   public static void main(String[] args)
   throws IOException,SQLException{
      Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
      SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);

      /* This would update one record in Employee table. */
      System.out.println("Going to update record.....");
      Employee rec = new Employee();
      rec.setId(1);
      rec.setFirstName( "Roma");
      smc.update("Employee.update", rec );
      System.out.println("Record updated Successfully ");

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

Kompilieren und Ausführen

Hier sind die Schritte zum Kompilieren und Ausführen der oben genannten Software. Stellen Sie sicher, dass Sie PATH und CLASSPATH richtig eingestellt haben, bevor Sie mit der Kompilierung und Ausführung fortfahren.

  • Erstellen Sie Employee.xml wie oben gezeigt.
  • Erstellen Sie Employee.java wie oben gezeigt und kompilieren Sie es.
  • Erstellen Sie IbatisUpdate.java wie oben gezeigt und kompilieren Sie es.
  • Führen Sie die IbatisUpdate-Binärdatei aus, um das Programm auszuführen.

Sie würden folgendes Ergebnis erhalten und ein Datensatz würde in der Tabelle EMPLOYEE aktualisiert, und später würde derselbe Datensatz aus der Tabelle EMPLOYEE gelesen.

Going to update record.....
Record updated Successfully
Going to read records.....
   1  Roma  Ali  5000
Records Read Successfully