auto mapping column name to POJO property using mapUnderscoreToCamelCase setting

pengguna mybatis yang budiman, fitur yang cukup membantu dalam tahap development aplikasi yang anda bangin dengan iBatis maupun myBatis adalah mapUnderscoreToCamelCase, fitur ini dapat anda tambahkan pada mybatis-config.xml bersama configuration yang lainnya berikut adalah contoh settingan saya:


<configuration>

<settings>
 <setting name="cacheEnabled" value="false"/>
 <setting name="lazyLoadingEnabled" value="true"/>
 <setting name="multipleResultSetsEnabled" value="true"/>
 <setting name="useColumnLabel" value="true"/>
 <setting name="useGeneratedKeys" value="true"/>
 <setting name="autoMappingBehavior" value="PARTIAL"/>
 <setting name="defaultExecutorType" value="SIMPLE"/>
 <setting name="safeRowBoundsEnabled" value="false"/>
 <setting name="mapUnderscoreToCamelCase" value="false"/>
 <setting name="localCacheScope" value="SESSION"/>
 <setting name="jdbcTypeForNull" value="OTHER"/>
 <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
 <strong><setting name="mapUnderscoreToCamelCase" value="true"/></strong>
 </settings>

...

</configuration>

kegunaan settingan diatas adalah untuk mengotomatisasikan nama kolom yang ada pada table anda ke property java bean anda. seperti contoh nama kolom anda pada table adalah user_name, akan direpresentasikan pada bean anda adalah userName. jadi anda tidak repot-repot lagi menulis SQL di xml seperti ini

select
user_name as userName
from
table_user
semoga membantu

fixed error : Mapped Statements collection does not contain value for yourClassName

to fixed problem if you see error like this “Mapped Statements collection does not contain value for , you need check your code and make sure the three names have to match:
- interface = your.Path.dao.YourClassInterface
- mapper file = /your/path/dao/YourClassInterface.xml
- mapper namespace = your.Path.dao.YourClassInterface

in .xml my batis mapper file, make sure namespace is your interface path and name, not your model/bean.

happy coding! :P

fixed org.postgresql.jdbc4.Jdbc4PreparedStatement.setQueryTimeout(int) is not yet implemented.

i tried integrating spring, struts2 and myBatis framework, i’ve found many error when trying to start application. one of that errors is failed querying to database cause SQLFeatureNotSupportedException.

if you see Cause: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc4.Jdbc4PreparedStatement.setQueryTimeout(int) is not yet implemented. error on your application log, its mean you need to reconfigure your apps. there properties on your config use query time out, but the jdbc driver not yet implement.

that problem will be fixed if you remove/comment your properties configuration. see my config before and after.

mybatis-config.xml (before)


<configuration>
 <settings>
 <setting name="cacheEnabled" value="true"/>
 <setting name="lazyLoadingEnabled" value="true"/>
 <setting name="multipleResultSetsEnabled" value="true"/>
 <setting name="useColumnLabel" value="true"/>
 <setting name="useGeneratedKeys" value="false"/>
 <setting name="autoMappingBehavior" value="PARTIAL"/>
 <setting name="defaultExecutorType" value="SIMPLE"/>
<strong><setting name="defaultStatementTimeout" value="25000"/></strong>
 <setting name="safeRowBoundsEnabled" value="false"/>
 <setting name="mapUnderscoreToCamelCase" value="false"/>
 <setting name="localCacheScope" value="SESSION"/>
 <setting name="jdbcTypeForNull" value="OTHER"/>
 <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
 </settings>

</configuration>

mybatis-config.xml (after)


<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<strong><!--<setting name="defaultStatementTimeout" value="25000"/>--></strong>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

</configuration>

then start your apps, this error should be gone.

see postgres and jdk version miss match in this link http://jdbc.postgresql.org/download.html

hope this post will help you, thanks

Masalah Upload File pada Struts2 versi 2.0.6

saat membuat fasilitas untuk mengupload file dengan menggunakan Struts2 versi 2.0.6, terjadi masalah ketika sesaat action untuk upload file tersebut, bahkan tidak bisa di debug karena memanggil method yang ditujupun tidak dapat dilakukan. setelah telusur punya telusur, ternyata ada bugs di class bawaan struts tersebut yaitu class org.apache.struts2.dispatcher. pada method prepareDispatcherAndWrapRequest.

Ada beberapa solusi untuk ini, solusi pertama mengganti class bawaan struts dengan cara update/perbaharui class tersebut silahkan ambil disini, buat di project anda package sesuai class itu berada org.apache.struts2. jadi anda haru membuat packet org-apache-dst, ini tujuannya agar file class bawaan struts akan digantikan dengan yang anda buat tadi.

cara kedua yaitu di tinggal menambahkan pada web.xml baris berikut:

<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>

<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

dan silahkan anda coba lagi upload file anda. pada kasus saya, masalah ini terselesaikan!

#masalahnya dari 1 bulan kemarin damn!

Contoh Mudah Menggunakan jQueryUI

jQuery ini sebenernya keumpulan javaScript yang jlimet dibuat oleh mereka-mereka untuk mempermudah dalam melakukan penulisan untuk java script, seperti misalanya kita membuat sebuah animasi transisi pada layer di HTML, tidak perlu menuliskan dari awal transisinya yang saya yakin sangat panjang, setelah adanya jQuery hal-hal yang panjang tadi dapat dipersingkat kita tinggal menuliskan “.slideDown()”. Apalagi ada turunannya bernama jQueryUI — sangat membantu anda dalam mengindahkan halaman web.

IMPLEMENTASI

Disini saya tidak akan membahas tentang dasar-dasar HTML, CSS dan Java Script ya. Kita langsung mengimplementasikan penggunaan jQuery dan jQueryUI (karena jQueryUI membutuhkan jQuery :P).

ok, saya memiliki sebuah halaman sederhana sebagai berikut:

<html>
<head><title>jQueryUI sample </title></head>

<body>
<h1>Test jQueryUI</h1>
<form action="#" method="post" id="formTest">
Tanggal (dd/mm/yyyy) : <input type="text" id="tanggal" name="tanggal">  <br>
<input type="button" id="Simpan" value="Simpan">
</form>
</body>
</html>

gambar 1:

sekarang kita sudah memiliki halaman tanpa “bumbu”, karena kita menggunakan jQueryUI maka kita harus meng-include-kan file pendukung jQueryUI, seperti jQuery, jQueryUI, dan CSS sehingga kita menambahkan tag seperti berikut setelah tag </head>:

<link rel="Stylesheet" href="pathAnda/page/css/cupertino/jquery-ui-1.8.13.custom.css" type="text/css" />
<script type="text/javascript" src='pathAnda/page/script/jquery/jquery-1.5.1.min.js'></script>
<script type="text/javascript" src='pathAnda/page/script/jquery/jquery-ui-1.8.13.custom.min.js'></script>

setelah itu tinggal kita gunakan tag-tag jQueryUInya. kita gunakan jQueryUInya seperti javaScript biasa, berikut implementasinya:

<script type="text/javascript">

$(document).ready(function() {
$("#Simpan").button();
});
</script>

gambar 2:

perhatikan text #Simpan, itu merupakan ID dari tambolm yang kita buat, anda dapat mengimplementasikannya juga pada tag <div> sesuai dengan kebutuhan. selain ID anda jg dapat menggunakan CLASSnya biasanya pada <div class=”bla-bla”>. setelah itu perhatikan tombol yang kita buat, setidaknya nilai estetikanya lebih daripada sebelumnya. sekarang kita tambahkan lagi date picker untuk textfield tanggal. kita hanya menambahkan :

$("#tanggal").datepicker({
showOn: "button",
buttonImage: 'pathAnda/page/'+"images/calendar.gif",
showAnim:"show",
dateFormat:"dd-mm-yy",
buttonImageOnly:true
});

sekarang di samping text field terdapat gambar kalender yang dapat anda gunakan untuk menentukan tanggal. mudah bukan??? :D

“silahkan dipelajari mas hasan” :P

ini lengkapnya:

<html>
<head><title>jQueryUI sample </title></head>
<link rel="Stylesheet" href="pathAnda/page/css/cupertino/jquery-ui-1.8.13.custom-without-tabs.css" type="text/css" />
<script type="text/javascript" src='pathAnda/page/script/jquery/jquery-1.5.1.min.js'></script>
<script type="text/javascript" src='pathAnda/page/script/jquery/jquery-ui-1.8.13.custom.min.js'></script>
<script type="text/javascript">

$(document).ready(function() {
$("#Simpan").button();
$("#tanggal").datepicker({
showOn: "button",
buttonImage: 'pathAnda/page/'+"images/calendar.gif",
showAnim:"show",
dateFormat:"dd-mm-yy",
buttonImageOnly:true
});
});
</script>
<body>
<h1>Test jQueryUI</h1>
<form action="#" method="post" id="formTest">
Tanggal (dd/mm/yyyy) : <input type="text" id="tanggal" name="tanggal">  <br>
<input type="button" id="Simpan" value="Simpan">
</form>
</body>
</html>
</script>

Kemana semangat menulis itu pergi??

2 tahun belakangan ini menulis adalah hal yang mahal, terang saja, sekarang sudah berkutit dengan project-project yang menambah ilmu, ilmu batiniah dan ilmu rohaniah meskipun fisikiahNya mash blum ada perubahan ke arah “besar” :p

saya kadang iri gmn gtu, ngunjungin halaman blog teman-teman yang aktif nulis. semangat nulis ilang-timbul-ilang-timbul, sebenarnya yang terjadi pada diri saya saat ini adalah fenomena kosmik yang negatif, negatif saya asumsikan disini sebagai personal yang hidup dalam “sangkar emas”  dan haus dengan kebebasan jiwa, kebebasan berekspresi, kebebasan pribadi (keluarga dan sosial).

eh tapi jangan salah, buku catatan harian tetap terisi meskipun berisikan intisari kejadian sehari-hari, baik ide, moment, dan rencana hidup. :p

semoga anda bisa membaca catatan harian saya…. :D

HP ProBook 4420s (ProBook Series) With Windows 7

Karena kebagian sebuah mainan baru yaitu HP ProBook 4420s, yang kebetulan ditanam intel i3 di dalamnya, dengan Win 7 ultimate 32bit sebagai Operating Sistemnya, ada beberapa hal yang kurang di mainan baru ini. dengan spesifikasi yang wow, tetapi saat di intall win 7, kok ada yang kurang…. seperti shorcut(tombol singkat ‘fn+f2′) dan Semantic TouchPadnya tidak berfungsi sebagaimana mestinya, sehingga layar yang sangat terang tidak bisa di redupkan, dan touchPad tidak bisa dimatikan. padahal di Device Manager, kondisi hardware dikenali, ada 2 hardware yang belum dikenal, tapi ini tidak mempengaruhi sistem.

usut punya usut, carilah saya sebuah solusinya, yaitu driver. dan ternyata betul dugaan hati ini, dengan di downloadnnya dirver di sini, maka semua fitur yang ada di dalam mainan baru ini berfungsi dengan sangat normal. di tambah lagi fitur Aero bawaan windows dapat dijalankan, bagaimana dengan CompizFusion ya… hehehe

untuk rekan2 sekalian yang memiliki series ProBook, jangan percaya Driver bawaan Windows 7, silahkan download saja, karena driver tidak dibundel dalam paket pembelian, kecuali disediakan oleh para penjual barang… :D

Sadar Tidak Anda Bila di Facebook??

beberapa waktu lalu saya du’tag’ oleh seorang sahabat di jogja disalah satu ‘note’nya dalam facebook dengan judul facebooker. setelah membaca isi tersebut, saya baru sadar, ternyata banyak sekali orang-orang pengguna internet jaman sekarang jarang sekali membaca term and conditions atau dalam bahasa indonesiannya syarat dan kondisini, atau biasa dikenal dengan syarat dan ketentua yang berlaku. sebenarnya ada baiknya kita membaca hal2 demikian, kenapa? karena dari sini anda tidak tertipu. misalnya, apabila anda merasa sangat dirugikan oleh layanan2 yang diberikan, atau mengambil hak cipta anda. kutipan dari note sahabat saya tersebut sedemikian:

Bagi yang suka dengan facebook, ini adalah antisipasi sejak dini yang
harus anda lakukan.

ABOUT FACEBOOK
Facebook sudah mendunia dan mewabah!
Blackberry bisa dijual laku keras juga gara-gara Facebook.
Facebook menyalip kepopuleritas aplikasi sejenis di dunia maya.

Namun berikut ada beberapa hal-hal yang perlu diketahui dan
dipertimbangkan:

1. Facebook adalah aplikasi web yang tujuannya untuk komunikasi sosial.
2. Facebook ádalah PEMILIK dari semua isi termasuk yang di posting oleh
anda!

Baca term and conditions di ( http://www.facebook .com/terms. php?ref=pf)

Nah berikut ádalah kekeliruan yang sering dipikir benar:

Ada anggapan bahwa semua postingan di facebook account saya adalah milik
saya!

Ini adalah salah besar!!
Memang kalian bisa mengkontrol siapa yang bisa akses terhadap postingan
kalian.Kalian bisa mengatur siapa yang bisa baca blog saya, siapa yang
bisa lihat photo saya dan sebagainya.

Tetapi apapun yang sudah upload ke Facebook sudah menjadi hak milik
(property) dari tim facebook.

Facebook berhak melakukan apa saja terhadap isi yang sudah kita upload.
Jika kita upload photo anak-anak kita, maka suatu ketika ada iklan produk
bayi yang photonya anak kita ya jangan kaget.
Kalau ada yang upload photo bugil dan kinky dan meski hanya diset yang
bisa akses diri sendiri, jangan kaget kalau photo itu suatu saat muncul
dalam bentuk iklan kondom.

Kok bisa? Ya bisa! Karena Tim facebook punya hak menjual semua isi yang
berada di semua account facebook.Makanya, jangan posting sesuatu yang
isinya benar-benar private.

Jangan post photo keluarga, photo anak-anak, dsb yang punya nilai
kenangan. Jangan post sesuatu yang punya nilai hak cipta milik anda.
Misalnya ada yang mengarang buku lalu post di Facebook. Facebook berhak
menjual buku anda! Karena dengan post di Facebook anda menyatakan itu
milik Facebook!

Satu hal lagi yang crucial: Kalau anda post sesuatu di facebook lalu
menghapusnya, jangan berpikir bahwa anda sudah benar-benar menghapusnya.
Apa pun yang sudah di post di facebook itu sudah menjadi milik facebook
dan mereka simpan. Kalau anda menghapus, itu hanya menghapus access di
acount anda saja. Physically, postingan anda still there!

Semoga Bermanfaat

dengan demikian, sebaiknya pembaca semua membeca terlebih dahulu ketentuan yang berlaku sebelum bertindak. OC…. :)

Update status lewat telepon umum, black berry, dll

sekejap saya perhatikan ‘detail’ dari status2 temen2 yang ada di daftar teman saya di FB, ada yang menggunakan update via BlackBerry, byar keren seperti punya blackberry, yatannya tidak. nah, kitapun dapat mengubah yang demikian itu lewar app (applikasi tambahan) yang ada d facebook. coba ke sini:

untuk telepon umum -> http://www.facebook.com/apps/application.php?id=310694940314

untuk blackBerry -> http://apps.facebook.com/bb-update/

penggunaannya sangat mudah, tinggal anda “allow” saja aplikasi tersebut untuk mengupdate status. trus ada text area untuk memasukkan status anda, tinggal pilih update, maka status anda sekejap akan berubah:

hasil update status via telepon umum

status via telepon umum

selamat mencoba :)