IJdbcDao
オブジェクトマッピングを使用せず、SQLによる読込みや更新を行いたい場合にIJdbcDaoを用いる。
Long値の読込み
なぜか、String値の読込み機能はない(readIdStringは別物)。おそらくLong値の読込みはprimary keyやcount(*)等の読込みに使用することを意図しているものと思われる。
String sql = "select id from persons where id=?"; Long id = daos.getJdbcDao().readLong(sql, 5);
IResultSetProcessor
マニュアルにもあるようにIResultSetProcessorは冗長なところがあるかもしれない。以下のようにしてみる。
abstract class MyResultSetProcessor implements IResultSetProcessor {
public void init(ResultSet result, IDaos daos) {}
public Object getResult() { return null; }
};
Connection conn = getConnection();
IDaos daos = persistenceManager.createDaos(conn);
daos.getJdbcDao().read("select * from user", new MyResultSetProcessor() {
public void process(ResultSet result, IDaos daos) {
try {
System.out.println("" + result.getInt(1) + ", " + result.getString(2));
} catch (SQLException ex) {
throw new RuntimeException(ex);
}
}
});
conn.close();これはIdbcDao内部で取得したResultSetについて、レコードポインタを進めながらそれぞれをユーザ側で処理させるというものである。
更新
単純に更新用SQLを発行する例。
String sql = "insert into persons(name) values(?)"; daos.getJdbcDao().update(sql, "John Doe");
