用于简化数据库操作,如果使用Spring,可以考虑JDBCTemplate,网址 http://jakarta.apache.org/commons/dbutils/
BasicRowProcessor:
用于数据的封装,具体表现在rs记录集到array,bean,map等.对于bean的封装,提供了两个方法:toBean和toBeanList.也就是说封装一行到一个bean,用list在将所有Bean封装在一起.
ProxyFactory:
代理工厂类,主要生成各种关于jdbc类的代理对象.你可以自己搞一个Connection或者ResultSet等等.其实实现原理很简单,就是用java.lang.reflect.Proxy类生成的.例如下面的代码:
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
new Class[] { Foo.class },
handler);
ResultSetIterator:
这个类就是将ResultSet实现了Iterator接口,做了个封装,我看没什么大用,完全可以由ResultSetHandler的子类做封装.也很简单,需要的自己看看吧.
QueryLoader:
一个属性文件加载器,主要用于加载属性文件中的sql到内存中,是个线程安全的类,看来老外原来喜欢把sql统一放在一个属性文件里面阿.
接着是ResultSetHandler接口带领的记录集封装类.
1. ArrayHandler: 将记录集封装到array里面.
2. ArrayListHandler:将上面的array在封装到List里面.
3. BeanHandler:将记录集封装到一个Bean里面.
4. BeanListHandlerTest:将上面的Bean封装到list里面.
5. MapHandler:....
6. MapListHandler:.....
7. ScalarHandler:这个也简单,就是根据记录集的列的索引或者列名来判断一个值是否和他相等.看起来好像用处也不大...
StringTrimmedResultSet:
将记录集中的数值都trim掉...
SqlNullCheckedResultSet:
这个是对sql语句执行完成之后的的数值进行null的替换.如果你想将int为0的都替换成100或者姓名为null的都替换成”无”,用这个类最合适了.看下面的例子:
Connection conn = ..... Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("Select col1, col2 FROM table1"); SqlNullCheckedResultSet wrapper = new SqlNullCheckedResultSet(rs); wrapper.setNullString("---N/A---"); wrapper.setNullInt(-999); rs = ProxyFactory.instance().createResultSet(wrapper); while (rs.next()) { String col1 = rs.getString("col1"); int col2 = rs.getInt("col2"); } //这里的col1如果为空的话就已经替换了.... rs.close(); |
QueryRunner run = new QueryRunner(dataSource);
// Execute the query and get the results back from the handler
Object[] result = (Object[]) run.query(
"SELECT * FROM Person WHERE name=?", "John Doe");