iBATIS - Güncelleme İşlemi

Son bölümde, iBATIS kullanarak bir tablo üzerinde READ işleminin nasıl gerçekleştirileceğini tartıştık. Bu bölüm, iBATIS kullanarak bir tablodaki kayıtları nasıl güncelleyebileceğinizi açıklar.

MySQL'de aşağıdaki EMPLOYEE tablosuna sahibiz -

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

Bu tablonun aşağıdaki gibi yalnızca bir kaydı vardır -

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

Çalışan POJO Sınıfı

Udpate işlemini gerçekleştirmek için Employee.java dosyasını aşağıdaki gibi değiştirmeniz gerekir -

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 Dosyası

SQL mapping deyimini iBATIS kullanarak tanımlamak için Employee.xml içine <update> etiketi ekleyeceğiz ve bu etiket tanımının içine, veritabanında SQL UPDATE sorgusu çalıştırmak için IbatisUpdate.java dosyasında kullanılacak bir "id" tanımlayacağız.

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

Bu dosya, kayıtları Çalışan tablosuna güncellemek için uygulama düzeyinde mantığa sahiptir -

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

Derleme ve Çalıştırma

Yukarıda bahsedilen yazılımı derlemek ve çalıştırmak için adımlar aşağıda verilmiştir. Derleme ve yürütme için ilerlemeden önce PATH ve CLASSPATH'ı uygun şekilde ayarladığınızdan emin olun.

  • Employee.xml'yi yukarıda gösterildiği gibi oluşturun.
  • Employee.java'yı yukarıda gösterildiği gibi oluşturun ve derleyin.
  • IbatisUpdate.java'yı yukarıda gösterildiği gibi oluşturun ve derleyin.
  • Programı çalıştırmak için IbatisUpdate ikili dosyasını çalıştırın.

Aşağıdaki sonucu alırsınız ve EMPLOYEE tablosunda bir kayıt güncellenir ve daha sonra aynı kayıt EMPLOYEE tablosundan okunur.

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