Kemarin saya mencoba Ibatis, framework untuk datamapping. Selama ini aplikasi Java yang saya buat langsung menggunakan JDBC saja karena memang aplikasinya kecil.
Sayangnya setelah mencoba beberapa tutorial Ibatis yang ada di internet, tidak ada yang menjelaskan secara mudah dan ringkas penggunaan Ibatis pada Netbeans. Butuh lumayan lama untuk membuat versi sederhana (ala “hello world”) dengan Ibatis. Masalah yang muncul adalah pengaturan classpath yang membuat getResourceAsReader gagal. Netbeans selalu mencari di /build/classes, sehingga perlu ditambahkan beberapa penyesuaian.
Yang akan saya tulis di blog ini adalah tutorial yang paling minimalis yang menggunakan Ibatis. Aplikasinya menggunakan Netbeans (Windows). Tujuannya untuk referensi saya pribadi, jadi yang tidak-suka-tidak-boleh protes, walaupun silahkan saja memberikan masukan
Tapi syukur juga kalau posting ini dapat bermanfaat bagi orang lain.
Asumsikan MySQL dan Netbeans sudah ada di komputer. Ibatis dapat didownload di ibatis.apache.org. Buat database baru dengan nama dbtest dengan satu table Mahasiswa sebagai berikut:
create table mahasiswa ( id int auto_increment primary key, nim char(10), nama varchar(50) )
Isi dengan satu record:
insert into dbtest(nim,nama) values (‘1111′,’Budi’);
Kemudian buka Netbeans, buat new project, pilih Java Application. Beri nama “TestIbatis”. Lalu tambahkan dua library yang dibutuhkan, yaitu Ibatis dan MySQL driver. Pilih libraries (gambar bawah), klik kanan, pilih “Add Library” lalu pilih “mysql JDBC driver”. Kemudian klik kanan sekali lagi, pilih “Add JAR/Folder”, lalu masuk ke direktori Ibatis dan pilihlan ibatis-x.x.x.xxx.jar.

Isi Libraries
Sekarang buat file XML konfigurasi untuk Ibatis. Klik kanan pada package testibatis (gambar bawah) –> new –> Other –> XML document

Tambah File XML
Kemudian pilih XML document

Tambah XML
Beri nama SqlMapConfig.xml dengan isi sebagai berikut. Jangan lupa sesuaikan nama database (di contoh ini namanya dbtest), username dan password .
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true"/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL"
value="jdbc:mysql://localhost:3306/dbtest"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value=""/>
</dataSource>
</transactionManager>
<sqlMap resource="\testibatis\Mahasiswa.xml"/>
</sqlMapConfig>
Buat xml untuk table mahasiswa (caranya sama dengan buat xml diatas). Beri nama Mahasiswa.xml
<?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="Mahasiswa">
<select id="getMahasiswa" parameterClass="String" resultClass="testibatis.Mahasiswa">
SELECT
NIM as nim,
NAMA as nama
FROM MAHASISWA
WHERE NIM = #value#
</select>
</sqlMap>
Buat Mahasiswa.java (caranya sama dengan menambah xml document, tapi pilih tipe java class). Isi sebagai berikut
public class Mahasiswa {
private String nim;
private String nama;
}
Lalu klik kanan (gambar bawah), pilih refactor –> Encapsulate Field untuk membuat method setter dan getter.

Refactor
Pilih semua create getter dan create setter.
Kemudian buat SqlConfig.java untuk membuat map
import java.io.*;
public class SqlConfig {
private static final SqlMapClient sqlMap;
static {
try {
String resource = "\\testibatis\\SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader (resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException ("Error initializing MyAppSqlConfig class. Cause: " + e);
}
}
public static SqlMapClient getSqlMapInstance () {
return sqlMap;
}
}
Terakhir, di Main.java, tambahkan kode berikut:
import com.ibatis.sqlmap.client.SqlMapClient;
public class Main {
public static void main(String[] args) {
System.out.println("Coba Ibatis");
SqlMapClient sqlMap = SqlConfig.getSqlMapInstance();
try {
Mahasiswa M = (Mahasiswa) sqlMap.queryForObject("Mahasiswa.getMahasiswa", "1111");
System.out.println(M.getNama());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Jalankan, dan program akan menampilkan ‘Budi”.