Locked History Actions

Butterfly_Persistence/IJdbcDao

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