iBATIS - Buat Operasi

Untuk melakukan operasi Buat, Baca, Perbarui, dan Hapus (CRUD) menggunakan iBATIS, Anda perlu membuat kelas Objek Java Lama (POJO) yang sesuai dengan tabel. Kelas ini menjelaskan objek yang akan "memodelkan" baris tabel database.

Kelas POJO akan memiliki implementasi untuk semua metode yang diperlukan untuk melakukan operasi yang diinginkan.

Mari kita asumsikan kita memiliki tabel EMPLOYEE berikut di 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)
);

Kelas POJO Karyawan

Kami akan membuat kelas Karyawan di file Employee.java sebagai berikut -

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

Anda dapat menentukan metode untuk mengatur setiap bidang dalam tabel. Bab selanjutnya menjelaskan cara mendapatkan nilai setiap bidang.

File Employee.xml

Untuk mendefinisikan pernyataan pemetaan SQL menggunakan iBATIS, kita akan menggunakan tag <insert> dan di dalam definisi tag ini, kita akan mendefinisikan sebuah "id" yang akan digunakan dalam file IbatisInsert.java untuk mengeksekusi query SQL INSERT pada database.

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

Sini parameterClass −dapat mengambil nilai sebagai string, int, float, double , atau objek kelas apa pun berdasarkan kebutuhan. Dalam contoh ini, kita akan mengirimkan objek Employee sebagai parameter saat memanggil metode insert dari kelas SqlMap.

Jika tabel database Anda menggunakan kolom IDENTITAS, AUTO_INCREMENT, atau SERIAL atau Anda telah menentukan SEQUENCE / GENERATOR, Anda bisa menggunakan elemen <selectKey> dalam pernyataan <insert> untuk menggunakan atau mengembalikan nilai yang dihasilkan database.

File IbatisInsert.java

File ini akan memiliki logika level aplikasi untuk memasukkan record ke dalam tabel 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 ");
   }
}

Kompilasi dan Jalankan

Berikut adalah langkah-langkah untuk mengkompilasi dan menjalankan perangkat lunak yang disebutkan di atas. Pastikan Anda telah mengatur PATH dan CLASSPATH dengan benar sebelum melanjutkan untuk kompilasi dan eksekusi.

  • Buat Employee.xml seperti yang ditunjukkan di atas.
  • Buat Employee.java seperti yang ditunjukkan di atas dan kompilasi.
  • Buat IbatisInsert.java seperti yang ditunjukkan di atas dan kompilasi.
  • Jalankan biner IbatisInsert untuk menjalankan program.

Anda akan mendapatkan hasil berikut, dan record akan dibuat di tabel EMPLOYEE.

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

Jika Anda memeriksa tabel EMPLOYEE, itu akan menampilkan hasil berikut -

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