• 02Aug

    dear all jugger,

    maaf ada ralat pada artikel ibatis yg pertama. di class status manager ada statement IbatisUtil……. nah itu tidak akan muncul dikarenakan kita belum membuat class IbatisUtil nya. nah sekarang kita buat class nya :

    package model;
    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;
    import java.io.IOException;
    import java.io.Reader;
    public class IbatisUtil {
    private static SqlMapClient sqlMapper = null;
    static {
    try {
    Reader reader = Resources.getResourceAsReader(”model/SqlMapConfig.xml”);
    sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
    reader.close();
    } catch (IOException e) {
    throw new RuntimeException(”Something bad happened while building the SqlMapClient instance.” + e, e);
    }
    }
    public static SqlMapClient sqlMapper(){
    return sqlMapper;
    }
    }

    nah sekarang terbentuk class IbatisUtil yg dapat di panggil di Status Manager.

    ok sekarang jugger kita lanjut ke bagian 2 yaitu bagaimana menggunakan relasi many-to-one , one-to-many , many-to-many, one to one. pada bagian ini akan dibahas many to one dan bagian ini merupakan terusan bagian ibatis 1.

    persiapan 1

    sekarang kita buat class bernama User:

    package model;

    public class User{

    private int idUser;

    private String userName;

    private String password;

    private Status status;

    (jangan lupa buat getter and setter nya)

    }

    sekarang buat tabel nya dengan field-field berikut:

    IDUSER (int)

    USERNAME (varchar)

    PASSWORD (varchar)

    STATUS ID (int) >> di buat foreign key ke tabel status

    setelah itu buat konfigurasi xml untuk class User

    PUBLIC “-//ibatis.apache.org//DTD SQL Map 2.0//EN”
    “http://ibatis.apache.org/dtd/sql-map-2.dtd”>









    xml di atas disimpan dengan nama User.xml dan jangan lupa kita cantumkan juga property nya di SqlMapConfig.xml dengan
    .

    perhatikan di bawah result map pada User.xml ada tambahan property
    select…. itu berfungsi jika kita mendapat property - property pada class User maka informasi yg bersangkutan pada class status akan juga diambil sesuai dengan propertynya. nah kasus ini bisa disebut many-to-one pada tabel User.

    NB : select itu ada 2 jenis yang satu akan mengembalikan nilai berupa object class danyang satu akan mengembalikan nilai berupa collection, caranya sama tinggal kita ubah aja pada property nya menjadi

    perhatikan pada parameter #status.idStatus# ini akan mendapat property idStatus dari tabel status.

    sekarang kita coba insert ke tabel user, dan jangan lupa buat pada class StatusManager method yg akan mengembalikan nilai berupa object status dengan parameter id.

    package model;

    public class UserManager{

    public void updateUser(User user){
    try{
    IbatisUtil.sqlMapper().startTransaction();
    IbatisUtil.sqlMapper().insert(”insertUser”,user);
    IbatisUtil.sqlMapper().commitTransaction();
    }catch(Exception e){
    ………
    }finally{
    IbatisUtil.sqlMapper().endTransaction();
    }
    }

    }

    sekarang kita test:

    package model;

    public class Test{

    public static void main(String [] args){

    StatusManager statusManager = new StatusManager();

    UserManager userManager = new UserManager();

    User user = new User();

    try{

    Status status = statusManager.loadStatusById(1);

    user.setUserName(”admin”);

    password.setPassword(”rahasia”);

    status.setStatus(status);

    userManager.insertUser(user);

    }catch(Exception e){

    ………….

    }

    }

    }

    dengan contoh yang simple diatas yang berelasi many to one dapat memberi arahan bagaimana menggunakan ibatis dengan mudah pada kasus yang lain, seperti one to many , many to many , one to one.

    semoga bermanfaat.

    Salam,

    Ivan Prasetia

    YM! : iphan_zeke_boy@yahoo.co.id

  • 31Jul

    Dear all Jugger,

    Di sini akan menerangkan bagaimana mudah nya menggunakan ibatis,

    ibatis itu seperti hibernate, tetapi ada fitur - fitur hibernate yang tidak ada di ibatis karena itu libary ibatis sangatlah kecil.

    ibatis cocok bila aplikasi yang kita buat tidak terlalu rumit relasi tabel di database. ibatis itu sangat ringan, malahan lebih ringan dari hibernate.

    ibatis juga cocok untuk aplikasi desktop (JSE)

    oke sampe situ saja keterangan tentang ibatis, langsung aja jugger kita coding. :)

    persiapan 1:

    siapkan libary ibatis. dapat di download di http://ibatis.apache.org/

    persiapan 2:

    di sini akan ada 1 class untuk contoh nya.

    pertama kita buat class Status berisi :

    package model;

    public class Status{

    private int idStatus;

    private String namaStatus;

    ( jangan lupa buat getter and setter nya)

    }

    Nah karena ibatis tidak seperti hibernate yang dengan otomatis membentuk tabel sendiri, maka kita harus membuat tabel dulu di database dengan nama database dbtest dan terdapat tabel yg seperti class tersebut.

    pertama tabel status berisi field - field berikut:

    1. IDSTATUS (int)

    2. NAMASTATUS(varchar)

    ok setelah tabel terbentuk langsung buat konfigurasi ibatis :

    <?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>
    <transactionManager type=”JDBC” commitRequired=”false”>
    <dataSource type=”SIMPLE”>
    <property name=”JDBC.Driver” value=”com.mysql.jdbc.Driver”/>
    <property name=”JDBC.ConnectionURL” value=”jdbc:mysql://localhost/dbtest?autoReconnect=true”/>
    <property name=”JDBC.Username” value=”root”/>
    <property name=”JDBC.Password” value=”admin”/>
    </dataSource>
    </transactionManager>
    <sqlMap resource=”model/Status.xml”/>
    </sqlMapConfig>

    xml tersebut di simpan dengan nama SqlMapConfig.xml, dan terserah diletakan di package manapun. setelah itu kita buat xml untuk class tersebut.

    <?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=”Status”>
    <typeAlias alias=”Status” type=”model.Status”/>
    <resultMap id=”StatusResult” class=”Status”>
    <result property=”idStatus” column=”IDSTATUS”/>
    <result property=”namaStatus” column=”NAMASTATUS”/>
    </resultMap>

    =============================================

    pengisian ( <insert></insert> ,<delete></delete> dsb)

    =============================================
    </sqlMap>

    xml tersebut di simpan dengan nama Status.xml

    untuk memanipulasi database memerlukan perintah2 sql yang akan ditulis pada masing - masing xml yang bersangkutan.

    untuk insert data ke tabel menggunakan property insert :

    <insert id=”insertStatus” parameterClass=”Status”>
    insert into status(NAMASTATUS)values(#namaStatus#)

    </insert>

    perintah tersebut disisipkan pada Status.xml setelah tag </resultMap> dengan id bernama insertStatus. yang digunakan untul memanggil fungsi tersebut ke dalam method. pemanggilan di method sebagai berikut :

    buat class StatusManager

    package model;

    public class StatusManager {

    public void insertStatus(Status status) {

    try{

    IbatisUtil.sqlMapper().startTransaction(); IbatisUtil.sqlMapper().insert(”insertStatus”,status); << id dari xml IbatisUtil.sqlMapper().commitTransaction();

    }catch(Exception e){

    ……..

    }finally{

    IbatisUtil.sqlMapper().endTransaction();

    }

    }

    }

    untuk pengetesan :

    public static void main(String [] args){

    Status status = new Status();

    StatusManager statusManager = new StatusManager();

    status.setNamaStatus(”Manager”);

    try{

    statusManager.insertStatus(status);

    }catch(Exception e){

    }

    }

    untuk perintah delete,select dan update sama dengan perintah insert yang membedakan:

    delete memakai tag <delete> delete…</delete>, dengan pemanggilan IbatisUtil.sqlMapper().delete(”deleteStatus”,id (type data menurut class) );

    update memakai tag <update>update…</update>, dengan pemanggilan IbatisUtil.sqlMapper().delete(”updateStatus”,status );

    select memakai tag <select>select…</select>, karena ini mempunyai return maka >> return IbatisUtil.sqlMapper().queryForList(”selectAllStatus”); akan menggembalikan nilai dalam bentuk List atau collection lainnya.

    return (Status)IbatisUtil.sqlMapper().queryForObject(”selectStatusByNama”,nama); akan menggembalikan nilai dalam bentuk object status.

    demikian contoh ibatis yang sangat simple. akan ada beberapa kasus yang complex yang dapat di explore pada ibatis.

    salam,

    Ivan Prasetia

    YM! : iphan_zeke_boy@yahoo.co.id