利用回调技术实现的一个JDBC 查询操作(可依此进行扩展)

1.新建一个RowMapper接口:

2.创建一个回调接口:QueryCallBack

3.创建QueryHelper类

4.创建DatabaseManager

5.创建UserDaoImpl:

DatabaseManager类的executeQuery(final RowMapper rowMapper,String sql,Object[] parameters)方法

是核心,它将RowMapper和CallBack链接起来了。

首先调用QueryHelper类的executeQuery方法可以查询出所有满足查询参数的记录,获得最终的ResultSet.

然后QueryHelper自己并不去将ResultSet中的值组装成User对象,它将这个任务交给QueryCallback去做。

DatabaseManager创建的实现了接口QueryCallback的匿名内部类把上面这个任务担当下来了。但是这只是表面现象。因为它自己也没做事,它还是把数据的组装操作交给了RowMapper.

QueryCallback匿名内部类能访问外部类的final型的RowMapper.

最终还是落到了RowMapper头上。

在UserDaoImpl中,创建一个RowMapper的具体实现,并在创建的同时准备一个东西来装等下组装出来的User对象。所以就有了

new UserMapper(userList)

UserMapper实现的buildRow(ResultSet rs) 方法相当专一。一个rs对应一个User。(我不管外面的世界是怎么地!我就做这样简单的工作,呵呵!)

综上,通过此思路构建的查询操作,各个部分的操作职责分明。

通过此思路的解析,可以构建一个完整的CRUD操作工具集,利用的核心技术还是回调技术。

序列图如下:

你可能感兴趣的:(jdbc)