iBATIS - Peta Hasil
Elemen resultMap adalah elemen paling penting dan kuat di iBATIS. Anda dapat mengurangi hingga 90% pengkodean JDBC menggunakan iBATIS ResultMap dan dalam beberapa kasus, ini memungkinkan Anda untuk melakukan hal-hal yang bahkan tidak didukung oleh JDBC.
Desain ResultMaps sedemikian rupa sehingga pernyataan sederhana sama sekali tidak memerlukan pemetaan hasil yang eksplisit, dan pernyataan yang lebih kompleks memerlukan tidak lebih dari yang mutlak diperlukan untuk mendeskripsikan hubungan.
Bab ini memberikan pengenalan sederhana tentang iBATIS ResultMaps.
Kami 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)
);
Tabel ini memiliki dua catatan sebagai berikut -
mysql> select * from EMPLOYEE;
+----+------------+-----------+--------+
| id | first_name | last_name | salary |
+----+------------+-----------+--------+
| 1 | Zara | Ali | 5000 |
| 2 | Roma | Ali | 3000 |
+----+------------+-----------+--------+
2 row in set (0.00 sec)
Kelas POJO Karyawan
Untuk menggunakan iBATIS ResultMap, Anda tidak perlu mengubah file Employee.java. Mari kita pertahankan seperti di bab sebelumnya.
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 */
File Employee.xml
Di sini kita akan memodifikasi Employee.xml untuk memperkenalkan tag <resultMap> </resultMap>. Tag ini akan memiliki id yang diperlukan untuk menjalankan resultMap ini di atribut resultMap tag <select> kami.
<?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">
<!-- Perform Insert Operation -->
<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>
<!-- Perform Read Operation -->
<select id="getAll" resultClass="Employee">
SELECT * FROM EMPLOYEE
</select>
<!-- Perform Update Operation -->
<update id="update" parameterClass="Employee">
UPDATE EMPLOYEE
SET first_name = #first_name#
WHERE id = #id#
</update>
<!-- Perform Delete Operation -->
<delete id="delete" parameterClass="int">
DELETE FROM EMPLOYEE
WHERE id = #id#
</delete>
<!-- Using ResultMap -->
<resultMap id="result" class="Employee">
<result property="id" column="id"/>
<result property="first_name" column="first_name"/>
<result property="last_name" column="last_name"/>
<result property="salary" column="salary"/>
</resultMap>
<select id="useResultMap" resultMap="result">
SELECT * FROM EMPLOYEE
WHERE id=#id#
</select>
</sqlMap>
Berkas IbatisResultMap.java
File ini memiliki logika tingkat aplikasi untuk membaca catatan dari tabel Karyawan menggunakan ResultMap -
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 IbatisResultMap{
public static void main(String[] args)
throws IOException,SQLException{
Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
int id = 1;
System.out.println("Going to read record.....");
Employee e = (Employee)smc.queryForObject ("Employee.useResultMap", id);
System.out.println("ID: " + e.getId());
System.out.println("First Name: " + e.getFirstName());
System.out.println("Last Name: " + e.getLastName());
System.out.println("Salary: " + e.getSalary());
System.out.println("Record read Successfully ");
}
}
Kompilasi dan Jalankan
Berikut 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 IbatisResultMap.java seperti yang ditunjukkan di atas dan kompilasi.
- Jalankan biner IbatisResultMap untuk menjalankan program.
Anda akan mendapatkan hasil berikut yang merupakan operasi baca pada tabel EMPLOYEE.
Going to read record.....
ID: 1
First Name: Zara
Last Name: Ali
Salary: 5000
Record read Successfully