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");