Wednesday, July 27, 2005

commons-dbutils little hacks

commons-dbutils-1.0

1. Mapping nama kolom ke bean properties
Untuk merubah mapping nama kolom ke bean properties, dari standar penulisan field tabel di database yaitu dengan separator underscore "_" menjadi standar penulisan object field di java class yaitu tanpa separator dengan huruf kapital di awal kata. Misalnya: CUSTOMER_NAME menjadi customerName.

Ubah method mapColumnsToProperties pada class BeanProcessor pada line 365 yaitu:

String columnName = rsmd.getColumnName(col);
menjadi
columnName = StringUtils.replace(columnName, "_", "");
Referensi ini ternyata lebih baik dari apa yang saya buat disini.

2. QueryRunner yang bersifat scrollable.
Kita biasanya perlu berpindah-pindah cursor (scrollable) dari suatu result set dengan menggunakan method afterLast(), beforeFirst() dan lain-lain.

Default class QueryRunner dalam commons-dbutils adalah menghasilkan ResultSet yang bersifat TYPE_FORWARD_ONLY dan CONCUR_READ_ONLY. Untuk mengubah agar ResultSet dapat kita perlu membuat subclass dari class QueryRunner yang implementasinya seperti ini:

/*
* Created on Sep 23, 2004
*
*/

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;

public class QueryRunnerScrollable extends QueryRunner {

public QueryRunnerScrollable() {
super();
}

public QueryRunnerScrollable(DataSource ds) {
super(ds);
}

protected PreparedStatement prepareStatement(Connection conn, String sql)
throws SQLException {
return conn.prepareStatement(
sql,
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
}

Followers