zyjustin 2008-05-09
首先说明一下封装Resultset的动机。
java数据库应用比较流行的是用hibernate操作数据库,对于有一群民工手下的IT高级民工来说,
用hibernate确实是一种比较轻松的解决方式。
但在敏捷开发模式下,比如一两个人接个私活什么的,编写hibernate映射文件就变成
无比头痛的一件事。虽然工具可以帮助从数据库中反向生成,但数据库表结构的修改仍然
非常麻烦。
对于熟悉sql和存储过程的开发者来说,直接操作java数据集是比较轻快的解决方式。
但是直接操作数据集,对Connection, Statement, Resultset等对象必须小心翼翼
的关闭,否则服务器一不小心就吐白沫了。与其提心吊胆的关注释放数据库资源对象,不如
把resultset的一系列操作包装起来,省却开发麻烦。
我需要这样的数据库访问类。
查询类 QD:
返回一个查询 : new QD(String sql);
获得一个字段 new QD(String sql).getString(String fieldName);
new QD(String sql).getInt(int fieldIndex);
...
同时,因为很多情况下,执行一次查询通常只需要取一个字段的值,
每取得一次值后就在QD的类实现中自动关闭查询打开的数据库资源对象,
这样能相当的简化业务实现部分的代码。
如果需要取多个字段的值,那么就用下面的代码
QD qd = new QD(String sql).setContinousGet();
qd.getInt(...);
qd.getDouble(...);
....
qd.close();
遍历QD数据集的方法则简单设计如下QD qd = new QD(String sql).setContinousGet();
while(qd.next()) {
....
}
输出数据集的json字符串[{key1:value1,key2:v2,...}...{..}];
new QD(sql).asJsonObjs();
输出数据集的json数组字符串[[values1,value2,...],...[...]]
new QD(sql).asJsonArray();
另外,还可以考虑实现类似于jbuilder QueryDataSet的lookup字段
下篇再写QD的实现