iBATIS - İşlemi Oku

Son bölümde, iBATIS kullanarak bir tablo üzerinde CREATE işleminin nasıl gerçekleştirileceğini tartışmıştık. Bu bölüm, iBATIS kullanılarak bir tablonun nasıl okunacağını 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ı

Okuma işlemini gerçekleştirmek için Employee.java'daki Employee sınıfını aşağıdaki gibi değiştirirdik -

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 */

Employee.xml Dosyası

İBATIS kullanarak SQL eşleme deyimini tanımlamak için Employee.xml dosyasına <select> etiketi ekleyeceğiz ve bu etiket tanımının içine, veritabanında SQL SELECT sorgusunu yürütmek için IbatisRead.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>
	
</sqlMap>

Burada SQL SELECT deyimiyle WHERE cümlesini kullanmadık. Sonraki bölümde, WHERE cümlesini SELECT ifadesiyle nasıl kullanabileceğinizi ve bu WHERE cümlesine nasıl değer aktarabileceğinizi göstereceğiz.

IbatisRead.java Dosyası

Bu dosya, Çalışan tablosundan kayıtları okumak 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 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 ");
   }
}

Derleme ve Çalıştırma

Yukarıda belirtilen 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.
  • IbatisRead.java'yı yukarıda gösterildiği gibi oluşturun ve derleyin.
  • Programı çalıştırmak için IbatisRead ikili dosyasını çalıştırın.

Aşağıdaki sonucu alırsınız ve EMPLOYEE tablosundan aşağıdaki gibi bir kayıt okunur -

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