Masih dengan ibatis = : =
Barusan coba integrasikan ibatis dengan spring 3.0, disini saya menggunakan ibatis versi 2.3. yang belum support annotation. Ok, pertama kita akan membuat kelas pojo nya :
package org.kris.entity;
/**
*
* @author kris
*/
public class Mahasiswa {
private Integer id;
private String nim;
private String nama;
private String jurusan;
Nah, kemudian kita buatkan mappernya, disini kita akan mencoba dengan menggunakan 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"> <insert id="save" parameterClass="org.kris.entity.Mahasiswa" > insert into mahasiswa (nim, nama, jurusan) values (#nim#, #nama#, #jurusan#) </insert> <select id="getByNim" parameterClass="string" resultClass="org.kris.entity.Mahasiswa"> select * from mahasiswa where nim = #nim# </select> <delete id="delete" parameterClass="string"> delete from mahasiswa where nim = #nim# </delete> <select id="getAll" resultClass="org.kris.entity.Mahasiswa"> select * from mahasiswa </select> </sqlMap>
File xml diatas(sqlMap) berfungsi untuk menempatkan query-query yang kita butuhkan, jadi seluruh query akan diletakan di file tersebut, nantinya kita akan memanggil id dari masing-masing element, kita juga bisa mengirimkan parameter sesuai dengan type data yang diinginkan. Kemudian kita buatkan SqlMapConfig nya :
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <sqlMap resource="org/kris/entity/Mahasiswa.xml"/> </sqlMapConfig>
File tersebut hanya kan menentukan resource dari file mapper yang telah kita buat sebelumnya, kemudian, karena kita menggunakan spring kita dapat melakukan konfigurasi datasource didalam spring. Setelah itu kita buat interface dao dan implementasinya :
package org.kris.dao;
import java.util.List;
import org.kris.entity.Mahasiswa;
/**
*
* @author kris
*/
public interface MahasiswaDao {
public void save(Mahasiswa mahasiswa);
public void delete(Mahasiswa mahasiswa);
public Mahasiswa getByNim(String nim);
public List<Mahasiswa> getAll();
}
Implementasinya :
package org.kris.impl;
import java.util.List;
import org.kris.dao.MahasiswaDao;
import org.kris.entity.Mahasiswa;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
/**
*
* @author kris
*/
public class MahasiswaImpl extends SqlMapClientDaoSupport implements MahasiswaDao {
public void save(Mahasiswa mahasiswa) {
getSqlMapClientTemplate().insert("save",mahasiswa);
}
public void delete(Mahasiswa mahasiswa) {
getSqlMapClientTemplate().delete("delete",mahasiswa.getNim());
}
public Mahasiswa getByNim(String nim) {
return (Mahasiswa) getSqlMapClientTemplate().queryForObject("getByNim",nim);
}
public List<Mahasiswa> getAll() {
return (List<Mahasiswa>) getSqlMapClientTemplate().queryForList("getAll");
}
}
Spring menyediakan template SqlMapClientTemplate yang dapat kita gunakan untuk melakukan proses transaksi secara otomatis di level aplikasi. Untuk menggunakannya maka kita dapat meng-extends kelas SqlMapClientDaoSupport. Setelah itu kita dapat menggunakan method getSqlMapClientTemplate(). Jadi kita tidak perlu membuat, membuka dan menutup session secara manual seperti pada artikel sebelumnya. Kemudian kita injek kelas kelas yang dibutuhkan di dalam spring :
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="dataSource"> <property name="driverClassName" value="org.postgresql.Driver"/> <property name="url" value="jdbc:postgresql://localhost:5432/crude-ibatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <bean id="sqlMapClient"> <property name="configLocation" value="classpath:SqlMapConfig.xml"/> <property name="dataSource" ref="dataSource"/> </bean> <bean id="mahasiswaDao"> <property name="sqlMapClient" ref="sqlMapClient"/> </bean> </beans>
File diatas merupakan konfigurasi dari datasource dengan menggunakan spring, kemudian konfigurasi tersebut akan digunakan oleh SqlMapClientFactoryBean yang nantinya akan digunakan untuk keperluan proses transaksi. Kemudia kita melakukan injeksi terhadap interface mahasiswaDao seperti biasa dan menghubungakannya ke bean sqlMapClient yang telah kita buat sebelumnya.
Sampai pada tahapan tersebut kita sudah selesai, sekarang tinggal coba :
import java.util.List;
import org.kris.dao.MahasiswaDao;
import org.kris.entity.Mahasiswa;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class Main {
private MahasiswaDao mahasiswaDao;
private Mahasiswa mahasiswa;
public Main() {
ApplicationContext context = new ClassPathXmlApplicationContext("SpringConfig.xml");
mahasiswaDao = (MahasiswaDao) context.getBean("mahasiswaDao");
initMahasiswa();
this.save();
this.getByNim();
this.getAll();
this.delete();
}
public void initMahasiswa() {
mahasiswa = new Mahasiswa();
mahasiswa.setNim("001");
mahasiswa.setNama("Kris");
mahasiswa.setJurusan("Sistem Informasi");
}
public void save() {
System.out.println("Data Disimpan");
mahasiswaDao.save(mahasiswa);
}
public void delete() {
System.out.println("Data dihapus");
mahasiswaDao.delete(mahasiswa);
}
public void getByNim() {
System.out.println("Ambil data berdasarkan nim");
System.out.println(mahasiswaDao.getByNim(mahasiswa.getNim()).getNama());
}
public void getAll() {
System.out.println("Ambil seluruh data");
List<Mahasiswa> kategoris = mahasiswaDao.getAll();
for (Mahasiswa kategori : kategoris) {
System.out.println(kategori.getNim());
System.out.println(kategori.getNama());
System.out.println(kategori.getJurusan());
}
}
public static void main(String[] args) {
Main main = new Main();
}
}
Didalam kelas diatas kita hanya tinggal melakukan load terhadap spring. Hasilnya :
run: May 22, 2010 8:10:50 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@be2358: startup date [Sat May 22 08:10:50 PDT 2010]; root of context hierarchy May 22, 2010 8:10:50 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [SpringConfig.xml] May 22, 2010 8:10:50 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@10655dd: defining beans [dataSource,sqlMapClient,mahasiswaDao]; root of factory hierarchy May 22, 2010 8:10:50 AM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName INFO: Loaded JDBC driver: org.postgresql.Driver Data Disimpan Ambil data berdasarkan nim Kris Ambil seluruh data 001 Kris Sistem Informasi Data dihapus BUILD SUCCESSFUL (total time: 1 second)
Ok, mudah bukan , dengan menggunakan spring maka otomatis akan sangat membantu kita dalam penanganan transaksi dalam menggunakan ibatis, sekian dulu …terimakasih
DOWNLOAD SOURCE
wah, ganti template nih…
terima kasih banyak untuk krissadewo.com
oleh-olehnya dari solo belum saya kasihkan.
(^_^)d
Posted by Mudzakkir | July 1, 2010, 9:25 pmSama-sama mas mudzakkir
Posted by krissadewo | July 2, 2010, 3:06 pm